Opened 11 years ago

Closed 9 years ago

#206 closed defect (wontfix)

the NDFS32 file system can handle EAs, at least with SMB plugin

Reported by: ydario Owned by: bird
Priority: normal Milestone: libc-0.6.4
Component: libc-backend Version: 0.6.2
Severity: normal Keywords:
Cc:

Description

Also the NDFS32 file system driver can handle extended attributes, at least with SMB plugin. Probably also the local and ramfs plugins could too.

Unfortunately this feature depends on the plugin used and so it depends on the mounted resource. This means a NDFS32 drive can handle EAs for some directories only.

The following patch enables EAs for NDFS32 too:

Index: fs.c
===================================================================
--- fs.c	(revision 3650)
+++ fs.c	(working copy)
@@ -1817,6 +1817,7 @@
         strncat(pFsInfo->szName, (const char *)&pfsqb->szName[pfsqb->cbName + 1], sizeof(pFsInfo->szName) - 1);
     if (    !strcmp(pFsInfo->szName, "JFS")
         ||  !strcmp(pFsInfo->szName, "HPFS")
+        ||  !strcmp(pFsInfo->szName, "NDFS32")
         ||  !strcmp(pFsInfo->szName, "FAT"))
     {
         pFsInfo->fZeroNewBytes  = 1;

I wonder what happens if drives are added/removed while a libc program is running, not only for netdrive but also for lvm.

Change History (4)

comment:1 Changed 11 years ago by bird

NetDrive? is plugin based and it cannot be trusted to deliver reliable and fast EAs support. Using EAs over SMB is too unreliable, buggy and slow. This is why libc isn't doing this on the lan requester file systems either.

The only viable option would be for the SMB plugin to expose the unix extensions to SMB via DosFSCtl (or something), so libc doesn't have to emulate anything and can quietly fall back on standard behavior when these aren't available.

An alternative would be to add an environment variable or something where you could enable unix EAs on unsupported file systems.

comment:2 Changed 11 years ago by abwillis

TVFS also supports EAs if the underlying filesystem does. I don't think the source is available for TVFS so the environment variable approach would probably allow it for both.

comment:3 Changed 11 years ago by abwillis

I asked about adding DosFSCtl to the local plugin but Vitali does not believe that is the right approach: No, I do not think that it is a right solution to implement the additional unix extensions interface in the local plugin.

On local resources the proposed DosFSCtl interface is identical to the EA interface. Both depends on what is actually mounted as a local resource. libc can do the same things as the local plugin.

comment:4 Changed 9 years ago by bird

  • Resolution set to wontfix
  • Status changed from new to closed

NDFS32 is a cameleon filesystem.

Note: See TracTickets for help on using tickets.