You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by "xiaoxiang781216 (via GitHub)" <gi...@apache.org> on 2023/01/27 16:38:54 UTC

[GitHub] [nuttx] xiaoxiang781216 commented on pull request #8271: fs/rpmsgfs: return ENOTTY to vfs to do cmd operate

xiaoxiang781216 commented on PR #8271:
URL: https://github.com/apache/nuttx/pull/8271#issuecomment-1406750938

   > Please explain a little bit about the issue caused by that cache statfs, 
   
   Since statfs will report the free space, caching the result will make report inaccurately in a long run.
   
   > why the deadlock was happening?
   
   Here is a callstack:
   ```
       rptun: msg from other cpu
       [ap] [ 5] [<0x2c353768>] arm_switchcontext+0xc/0x10
       [ap] [ 5] [<0x2c322266>] sem_wait+0x5a/0xbc
       [ap] [ 5] [<0x2c7400a8>] inode_semtake+0x24/0x5c
       [ap] [ 5] [<0x2c74087a>] inode_release+0x6/0x60
       [ap] [ 5] [<0x2c741284>] file_close+0x18/0x44
       [ap] [ 5] [<0x2c74fb06>] rpmsgfs_close_handler+0x86/0xe4
       [ap] [ 5] [<0x2c75b8de>] rpmsg_virtio_rx_callback+0xba/0x1b4
       [ap] [ 5] [<0x2c75af70>] rproc_virtio_notified+0x44/0x5c
       [ap] [ 5] [<0x2c75a93c>] remoteproc_get_notification+0x1c/0x2c
       [ap] [ 5] [<0x2c335a08>] rptun_thread+0x74/0x208
       [ap] [ 5] [<0x2c323e72>] nxtask_start+0x3a/0x60
       
       nsh: send msg to other cpu with inode lock
       [ap] [10] [<0x2c353768>] arm_switchcontext+0xc/0x10
       [ap] [10] [<0x2c3221b2>] nxsem_wait_uninterruptible+0x6e/0xc8
       [ap] [10] [<0x2c74e498>] rpmsgfs_send_recv.constprop.0+0x78/0xc0
       [ap] [10] [<0x2c74ebc0>] rpmsgfs_client_statfs+0x50/0x80
       [ap] [10] [<0x2c3221ca>] nxsem_wait_uninterruptible+0x86/0xc8
       [ap] [10] [<0x2c74da78>] rpmsgfs_statfs+0x28/0x50
       [ap] [10] [<0x2c74534e>] mountpoint_filter+0x66/0x90
       [ap] [10] [<0x2c740016>] foreach_inodelevel+0x66/0x88
       [ap] [10] [<0x2c73fffa>] foreach_inodelevel+0x4a/0x88
       [ap] [10] [<0x2c740062>] foreach_inode+0x2a/0x48
       [ap] [10] [<0x2c745388>] foreach_mountpoint+0x10/0x20
       [ap] [10] [<0x2c745606>] mount_read+0x36/0x70
       [ap] [10] [<0x2c742a34>] read+0x30/0x5c
       [ap] [10] [<0x2c371096>] nsh_catfile+0x36/0x140
       [ap] [10] [<0x2c36d01a>] nsh_parse_command+0x7fe/0xc54
       [ap] [10] [<0x2c370f92>] nsh_session+0x66/0x134
       [ap] [10] [<0x2c3721a4>] nsh_consolemain+0x2c/0x44
       [ap] [10] [<0x2c374fde>] nsh_main+0x2a/0x4c
       [ap] [10] [<0x2c33f7f8>] lib_cxx_initialize+0x24/0x48
       [ap] [10] [<0x2c34274a>] nxtask_startup+0x12/0x24
       [ap] [10] [<0x2c323e7e>] nxtask_start+0x46/0x60
   ```
    Bascally, the global inode lock introduce the dead lock. We need find a better way to fix the dead lock.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@nuttx.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org