From: Stef B. <st...@gm...> - 2011-04-03 18:00:09
|
Hi, does anybody know the VFS (or any other mechanism) checks there is file opened somewhere in a directory, when removing the directory, and if that's the case the removal is prohibited. Otherwise I have to build this check myself. Stef |
From: John M. <jo...@jm...> - 2011-04-03 18:25:27
|
On 2011-04-03, at 14:00, Stef Bon wrote: > does anybody know the VFS (or any other mechanism) checks there is > file opened somewhere > in a directory, when removing the directory, and if that's the case > the removal is prohibited. Your file-system should not allow non-empty directories to be removed. Perhaps you meant to ask: does the VFS prohibit unlink of an open file? The answer to that is "no", but I'm sure that you could implement a check in your unlink function. Note however that many programs rely on the ability to unlink files after opening them. Maybe then you want unlink to fail on open files in particular directories. Perhaps then an extended attribute on the directory that indicates that unlink on open files should fail would be the way to go. John. |
From: Stef B. <st...@gm...> - 2011-04-03 19:39:39
|
Thanks for you answer, I have to clear this. You're right about not allowing non-empty directories. In general this is also the case for my fs, but there are exceptios, special directories where different behaviour is desired. My fs offers an overall overlay on resources found on the computer. For example, the map Computer contains "directories" which give access to various "hardware" on the localhost like (partitions on) harddisks, usb devices and cdroms. On my computer that looks like: sbon [ /Computer ]$ ls -al total 32 drwxr-xr-x 11 root root 4096 2011-04-03 20:57 . drwxr-xr-x 8 root root 4096 2011-04-03 09:24 .. drwxr-xr-x 2 root root 4096 2011-04-03 09:24 22-SAMSUNG_HD753LJ drwxr-xr-x 2 root root 4096 2011-04-03 09:24 23-SAMSUNG_HD753LJ drwxr-xr-x 2 root root 4096 2011-04-03 09:24 26-SAMSUNG_HD753LJ drwxr-xr-x 2 root root 4096 2011-04-03 09:24 3-Optiarc-DVD_RW_AD-7170S drwxr-xr-x 2 root root 4096 2011-04-03 09:24 6-LITE-ON-LTR-52327S drwxr-xr-x 2 root root 4096 2011-04-03 20:57 82-Kingston DataTraveler 2.0 Stick (2GB) (the user can just enter these as if these are simple directories, without noticing he/she is redirected to the location where the device is mounted, somewhere in /mnt) Here only the system (root) can remove and add partitions on the fly. This especially counts for removable devices like the 82-Kingston USB stick and CDroms. Well I see right away that this is not a good example. A better example is the location /Mounts, the user can mount various resources, at this moment only ISO files and archives (with archivemount, another fuse fs). He/she can right click on a ISO image file, and choose the option "Mount at personal mounts", and then it appears mounted in /Mounts, like the file ~/ISO/ubuntu-10.10-rc-desktop-i386.iso after right clicking and selecting the right option the /Mounts look like: sbon [ /Mounts ]$ ls -al total 12 drwxr-xr-x 3 sbon netgroup 4096 2011-04-03 21:15 . drwxr-xr-x 8 root root 4096 2011-04-03 09:24 .. drwxr-xr-x 2 sbon netgroup 4096 2011-04-03 21:15 ubuntu-10.10-rc-desktop-i386.iso and the contents (notice the d) is available here. Now the user (in this case me:sbon) has full rights, and can thus can remove the directory. Because of the special meaning of this directory you can think of it as a detach, or unmount. So for these directories (I gave it the name: a door to another workspace) (and only these) the fs allows it to be removed, even if it's not empty. I should mention here that my fs has a full administration of entries and inodes, also for these kinds of directories. The entries are copies of the entries found on the underlying fs, in this case a iso image. This is double, I know, but there are reasons for that. So it's possible that the user can "remove" the ubutu-10.. directory (it's actually a detach) while a file is still open... I hope you can understand my case. So leaves the question, does anywhere (the VFS) does some checking here or do I have to build it myself? That's no problem, I've already a list added to my fs of open fd's. A check this list is empty or not. This list is required since I'm replacing the automounter doing the mounts by a special "mount manager" thread of my fs managing all the mounted resources, like updating times and watching timers. When a file is opened on a mounted resource, it's set "on hold", and not watched for expiration (of the not being used time, which exceed a certain timeout, just like the automounter does). Now the mounted resource is set on the "expiration list" again, when there are no more files open (list of open files is empty). Stef |
From: John M. <jo...@jm...> - 2011-04-08 00:59:02
|
On 2011-04-03, at 15:39, Stef Bon wrote: > My fs offers an overall overlay on resources found on the computer. > For example, the map Computer contains "directories" which give access to > various "hardware" on the localhost like (partitions on) harddisks, > usb devices and cdroms. [...] > > So leaves the question, does anywhere (the VFS) does some checking > here or do I have to build it myself? That's no problem, I've already > a list added to my fs of open fd's. A check this list is empty or not. > This list is required since I'm replacing the automounter doing the > mounts by a special "mount manager" thread of my fs managing all the > mounted resources, like updating times and watching timers. When a > file is opened on a mounted resource, it's set "on hold", and not > watched for expiration (of the not being used time, which exceed a > certain timeout, just like the automounter does). Now the mounted > resource is set on the "expiration list" again, when there are no more > files open (list of open files is empty). Clearly you are defining a file-system with different semantics than a regular file-system. As I state in my previous message, in a regular file-system there is nothing stopping the user from deleting an open file. Then when the directory is empty, it can be deleted. Therefore, if you want to maintain this special semantic in your file-system, you need to implement your own checks. Regards, John. |
From: Stef B. <st...@gm...> - 2011-04-08 09:26:20
|
2011/4/8 John Muir <jo...@jm...>: > On 2011-04-03, at 15:39, Stef Bon wrote: > >> My fs offers an overall overlay on resources found on the computer. >> For example, the map Computer contains "directories" which give access to >> various "hardware" on the localhost like (partitions on) harddisks, >> usb devices and cdroms. > > > Clearly you are defining a file-system with different semantics than a regular file-system. Yes I do. >As I state in my previous message, in a regular file-system there is nothing stopping the user >from deleting an open file. Then when the directory is empty, it can be deleted. Therefore, if >you want to maintain this special semantic in your file-system, you need to implement your >own checks. > > Regards, > > John. Yes I see. Thanks a lot. Stef |