All of lore.kernel.org
 help / color / mirror / Atom feed
* nfs client deny execute access to QNX nfs server temperally
@ 2021-09-28  2:11 Hong Jiu Jin
  0 siblings, 0 replies; only message in thread
From: Hong Jiu Jin @ 2021-09-28  2:11 UTC (permalink / raw)
  To: linux-nfs

Hi Guys,

We meet below issue which need all of you help. 

-Question
1、Recently We meet one confuse issue. Sometimes android java application
file.exsits will return false even ls -al can successflly list
/data/vendor/nfs/mount/DVR/media/dvr_sdcard0/nfs_ready.flag.file.
 file permission is -rw-rw-rw-
2、We use native C++ application access api to access that file, it can
successfully access file too.
  If restart device, the issue remains the same and can not recover. If
mannually chmod 777 to
/data/vendor/nfs/mount/DVR/media/dvr_sdcard0/nfs_ready.flag.file,
application will successfully access.
  If restart device again, nfs_ready.flag.file will restore to 666
(-rw-rw-rw-)and Java application can successfully access too. We feel
confused why it happened.
3、After add sunrpc debug to kernel, we found that nfs permission denied in
nfs_execute_ok(-EACCES). You can read trace log in below.

Java API File exisit:
sa8155_v35:/ # dmesg
[  168.383021] NFS call  access
[  168.383906] NFS: nfs_update_inode(0:30/2525216000 fh_crc=0x69ed2ad0 ct=2
info=0x27e7f)
[  168.383911] NFS reply access: 0
[  168.383916] NFS: permission(0:30/2525216000), mask=0x1, res=0
[  168.383939] NFS call  lookup media
[  168.384801] NFS: nfs_update_inode(0:30/2525216000 fh_crc=0x69ed2ad0 ct=2
info=0x27e7f)
[  168.384809] NFS reply lookup: 0
[  168.384814] NFS: nfs_update_inode(0:30/42757 fh_crc=0x9466d356 ct=1
info=0x27e7f)
[  168.384822] NFS: nfs_lookup_revalidate_done(/media) is valid
[  168.384829] NFS call  access
[  168.385694] NFS: nfs_update_inode(0:30/42757 fh_crc=0x9466d356 ct=1
info=0x27e7f)
[  168.385699] NFS reply access: 0
[  168.385703] NFS: permission(0:30/42757), mask=0x1, res=-13
[  168.578734] NFS: nfs_weak_revalidate: inode 2525216000 is valid

sa8155_v35:/ # ls -al
/data/vendor/nfs/mount/DVR/media/dvr_sdcard0/nfs_ready.flag.file

[  127.410222] NFS call  access
[  127.411278] NFS: nfs_update_inode(0:30/2525216000 fh_crc=0x69ed2ad0 ct=2
info=0x27e7f)
[  127.411283] NFS reply access: 0
[  127.411984] NFS: permission(0:30/2525216000), mask=0x1, res=0
[  127.412003] NFS: lookup(/media)
[  127.412008] NFS call  lookup media
[  127.412562] NFS: nfs_update_inode(0:30/2525216000 fh_crc=0x69ed2ad0 ct=2
info=0x27e7f)
[  127.412566] NFS reply lookup: 0
[  127.412576] NFS: nfs_fhget(0:30/42757 fh_crc=0x9466d356 ct=1)
[  127.412585] NFS call  access
[  127.423788] NFS: nfs_update_inode(0:30/42757 fh_crc=0x9466d356 ct=1
info=0x27e7f)
[  127.423794] NFS reply access: 0
[  127.423961] NFS: permission(0:30/42757), mask=0x1, res=0
[  127.423970] NFS: lookup(media/dvr_sdcard0)
[  127.423974] NFS call  lookup dvr_sdcard0
[  127.424645] NFS: nfs_update_inode(0:30/42757 fh_crc=0x9466d356 ct=1
info=0x27e7f)
[  127.424649] NFS reply lookup: 0
[  127.424659] NFS: nfs_fhget(0:30/128 fh_crc=0x8bcac245 ct=1)
[  127.424668] NFS call  lookup dvr_sdcard0
[  127.425141] NFS: nfs_update_inode(0:30/42757 fh_crc=0x9466d356 ct=1
info=0x27e7f)
[  127.425145] NFS reply lookup: 0
[  127.425160] --> nfs_xdev_mount()
[  127.425260] NFS call  fsinfo
[  127.425783] NFS reply fsinfo: 0
[  127.425788] NFS call  pathconf
[  127.426159] NFS reply pathconf: -521
[  127.428048] do_proc_get_root: call  fsinfo
[  127.428802] do_proc_get_root: reply fsinfo: 0
[  127.428814] NFS: nfs_fhget(0:31/128 fh_crc=0x8bcac245 ct=1)
[  127.428827] <-- nfs_xdev_mount() = 0
[  127.429219] NFS call  access
[  127.429890] NFS: nfs_update_inode(0:31/128 fh_crc=0x8bcac245 ct=2
info=0x27e7f)
[  127.429895] NFS reply access: 0
[  127.429900] NFS: permission(0:31/128), mask=0x1, res=0
[  127.429908] NFS: lookup(/nfs_ready.flag.file)
[  127.429912] NFS call  lookup nfs_ready.flag.file
[  127.432195] NFS: nfs_update_inode(0:31/128 fh_crc=0x8bcac245 ct=2
info=0x27e7f)
[  127.432201] NFS reply lookup: 0
[  127.432226] NFS: nfs_fhget(0:31/261 fh_crc=0xae0e68a5 ct=1)
[  127.432252] NFS: dentry_delete(/nfs_ready.flag.file, 40088c)
[  127.433273] ls (10174) used greatest stack depth: 10480 bytes left
[  128.260482] NFS: nfs_weak_revalidate: inode 2525216000 is valid
[  129.308862] NFS: nfs_weak_revalidate: inode 2525216000 is valid


HAL C++ File API:

[  285.296718] NFS call  fsstat
[  285.297643] NFS reply fsstat: 0
[  285.297670] NFS: permission(0:30/2525216000), mask=0x1, res=0
[  285.297676] NFS call  lookup media
[  285.298436] NFS: nfs_update_inode(0:30/2525216000 fh_crc=0x69ed2ad0 ct=2
info=0x27e7f)
[  285.298441] NFS reply lookup: 0
[  285.298445] NFS: nfs_update_inode(0:30/42757 fh_crc=0x9466d356 ct=1
info=0x27e7f)
[  285.298450] NFS: nfs_lookup_revalidate_done(/media) is valid
[  285.298455] NFS: permission(0:30/42757), mask=0x1, res=0
[  285.298461] NFS call  lookup dvr_sdcard0
[  285.299099] NFS: nfs_update_inode(0:30/42757 fh_crc=0x9466d356 ct=1
info=0x27e7f)
[  285.299103] NFS reply lookup: 0
[  285.299107] NFS: nfs_update_inode(0:30/128 fh_crc=0x8bcac245 ct=1
info=0x27e7f)
[  285.299111] NFS: nfs_lookup_revalidate_done(media/dvr_sdcard0) is valid
[  285.299117] NFS: nfs_weak_revalidate: inode 128 is valid
[  285.299137] NFS: permission(0:30/2525216000), mask=0x1, res=0
[  285.299141] NFS call  lookup media
[  285.299724] NFS: nfs_update_inode(0:30/2525216000 fh_crc=0x69ed2ad0 ct=2
info=0x27e7f)
[  285.299728] NFS reply lookup: 0
[  285.299732] NFS: nfs_update_inode(0:30/42757 fh_crc=0x9466d356 ct=1
info=0x27e7f)
[  285.299736] NFS: nfs_lookup_revalidate_done(/media) is valid
[  285.299741] NFS: permission(0:30/42757), mask=0x1, res=0
[  285.299746] NFS call  lookup dvr_sdcard0
[  285.300488] NFS: nfs_update_inode(0:30/42757 fh_crc=0x9466d356 ct=1
info=0x27e7f)
[  285.300492] NFS reply lookup: 0
[  285.300495] NFS: nfs_update_inode(0:30/128 fh_crc=0x8bcac245 ct=1
info=0x27e7f)
[  285.300499] NFS: nfs_lookup_revalidate_done(media/dvr_sdcard0) is valid
[  285.300504] NFS: nfs_weak_revalidate: inode 128 is valid
[  285.300511] NFS call  fsstat
[  285.302187] NFS reply fsstat: 0
[  285.327504] NFS: nfs_weak_revalidate: inode 2525216000 is valid
[  285.327556] NFS: nfs_weak_revalidate: inode 2525216000 is valid
[  285.327570] NFS call  fsstat
[  285.328683] NFS reply fsstat: 0
[  285.328734] NFS: permission(0:30/2525216000), mask=0x1, res=0
[  285.328764] NFS call  lookup media
[  285.329636] NFS: nfs_update_inode(0:30/2525216000 fh_crc=0x69ed2ad0 ct=2
info=0x27e7f)
[  285.329648] NFS reply lookup: 0
[  285.329658] NFS: nfs_update_inode(0:30/42757 fh_crc=0x9466d356 ct=1
info=0x27e7f)
[  285.329669] NFS: nfs_lookup_revalidate_done(/media) is valid
[  285.329681] NFS: permission(0:30/42757), mask=0x1, res=0
[  285.329694] NFS call  lookup dvr_sdcard0
[  285.331196] NFS: nfs_update_inode(0:30/42757 fh_crc=0x9466d356 ct=1
info=0x27e7f)
[  285.331209] NFS reply lookup: 0
[  285.331218] NFS: nfs_update_inode(0:30/128 fh_crc=0x8bcac245 ct=1
info=0x27e7f)
[  285.331231] NFS: nfs_lookup_revalidate_done(media/dvr_sdcard0) is valid
[  285.331246] NFS: nfs_weak_revalidate: inode 128 is valid
[  285.331301] NFS: permission(0:30/2525216000), mask=0x1, res=0
[  285.331333] NFS call  lookup media
[  285.332307] NFS: nfs_update_inode(0:30/2525216000 fh_crc=0x69ed2ad0 ct=2
info=0x27e7f)
[  285.332319] NFS reply lookup: 0
[  285.332327] NFS: nfs_update_inode(0:30/42757 fh_crc=0x9466d356 ct=1
info=0x27e7f)
[  285.332337] NFS: nfs_lookup_revalidate_done(/media) is valid
[  285.332348] NFS: permission(0:30/42757), mask=0x1, res=0
[  285.332361] NFS call  lookup dvr_sdcard0
[  285.333321] NFS: nfs_update_inode(0:30/42757 fh_crc=0x9466d356 ct=1
info=0x27e7f)
[  285.333331] NFS reply lookup: 0
[  285.333341] NFS: nfs_update_inode(0:30/128 fh_crc=0x8bcac245 ct=1
info=0x27e7f)
[  285.333353] NFS: nfs_lookup_revalidate_done(media/dvr_sdcard0) is valid
[  285.333365] NFS: nfs_weak_revalidate: inode 128 is valid
[  285.333379] NFS call  fsstat
[  285.336596] NFS reply fsstat: 0

==============================
Android9.0 
saxxx:/data/vendor/nfs/mount # ls -al
total 52
drwxrwxrwx 11 root root 4096 2020-01-01 00:00 .
drwxrwxrwx  4 root root 4096 1970-01-01 08:00 ..
drwxrwxrwx  2 root root 4096 2020-01-01 00:00 CHWM_V3
drwxrwxrwx  2 root root 4096 2020-01-01 00:11 DVR
drwxrwxrwx  2 root root 4096 2020-01-01 00:00 MINI
drwxrwxrwx  2 root root 4096 2020-01-01 00:00 bootanimation
drwxrwxrwx  2 root root 4096 2020-01-01 00:00 common
drwxrwxrwx  2 root root 4096 2020-01-01 00:00 coredump
drwxrwxrwx  3 root root 4096 2020-01-01 00:00 fota
drwxrwxrwx  3 root root 4096 2020-01-01 00:00 qlog
drwxrwxrwx  2 root root 4096 2020-01-01 00:00 themes

2、insert TF card to QNX USB Port
saxxx:/data/vendor/nfs/mount # ls -al DVR/
total 36
drwxrwxrwx  2 root root  4096 2020-01-01 00:01 .
drwxrwxrwx 11 root root  4096 2020-01-01 00:00 ..
-rw-r--r--  1 root root 24576 2020-01-01 00:01 .recordfile_front.db
dr-xr-xr-x  2 root root     0 2020-01-01 00:01 media

3、
saxxx:/data/vendor/nfs/mount # ls -al DVR/media/dvr_sdcard0/
total 2508
drwxrwxrwx 3 root root    4096 2020-01-01 00:01 .
dr-xr-xr-x 2 root root       0 2020-01-01 00:02 ..
drwxrwxrwx 6 root root    4096 2020-01-01 00:01 ExternalDVR
-rw-rw-rw- 1 root root 2560000 2020-01-01 00:01 check.dat
-rw-rw-rw- 1 root root       0 2020-01-01 00:07 nfs_ready.flag.file

QNX:
# mount
/dev/umass0x20 on /usr/nfs_share/DVR/media/dvr_sdcard0 type dos (fat32)

# cat /etc/exports
/usr/nfs_share/DVR/ -root=0 193.18.1.201


-Env/Platform
QNX:
SDP 7.0, QNX NFS Server V3
nfs root -> /usr/nfs_share/DVR, mount TF card(usb) to
/usr/nfs_share/DVR/media/dvr_sdcard0, Android can access dvr_sdcard from nfs
root.
Android:
9.0, Nfs client V3, Kernel 4.14.156


Best Regards
Hong Jiu Jin



^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-09-28  2:12 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-28  2:11 nfs client deny execute access to QNX nfs server temperally Hong Jiu Jin

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.