>>Can you explain the code paths that are causing an issue with dcache_lock gone?
See I am working on a type of Union file System which has two branches -
1. Read Only- have individual mount point
2.Read Write-also have individual mount point
Now they coexist in a merged mount point.
so when such a mount command gets issued in my driver(HEPunion FS)-mount -t Hepunion -o /tmp/rw_path=RW:/tmp/ro_path=RO none /tmp/merged
Here /tmp/rw-path is the Read Write branch mount point, /tmp/ro_path is the Read Only branch mount point and merged point of the two branches are /tmp/merged
1.In this mount command following three main steps happen for each branch one after the other
Step1-hepunion_read_super which involves
a)get_branches:
MNT_POINT1=RW
MNT_POINT2=RO
b)make_path: RW, make_path: RO
Step2-hepunion_permission which involves
a) get_relative_path:
b) get_file_attr:
Step3- hepunion_getattr which involves
a) get_relative_path:
b) get_file_attr:
So my mount is successful
2. But when I navigate to mount point and do a "ls" ....THE KERNEL CRASHES
The last few messages I collect from crash utility is the call to hepunion_permission which again involves the above two steps-
a) get_relative_path:-----This is where my kernel crashes
b) get_file_attr:- I do not reach here
Now what I fail to understand that when a previous call to "hepunion_permission" was successful in "mount" command why it now fails at "ls" .