<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:syn="http://purl.org/rss/1.0/modules/syndication/" xmlns:admin="http://webns.net/mvcb/">
  <channel rdf:about="http://blog.gmane.org/gmane.comp.file-systems.fuse.devel">
    <title>gmane.comp.file-systems.fuse.devel</title>
    <link>http://blog.gmane.org/gmane.comp.file-systems.fuse.devel</link>
    <description/>
    <syn:updatePeriod>hourly</syn:updatePeriod>
    <syn:updateFrequency>1</syn:updateFrequency>
    <syn:updateBase>1901-01-01T00:00+00:00</syn:updateBase>
    <items>
      <rdf:Seq>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11573"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11570"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11566"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11562"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11557"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11554"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11550"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11549"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11539"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11537"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11536"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11534"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11533"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11527"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11518"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11517"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11515"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11511"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11508"/>
        <rdf:li rdf:resource="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11506"/>
      </rdf:Seq>
    </items>
    <image rdf:resource="http://gmane.org/img/gmane-25t.png"/>
    <textinput rdf:resource=""/>
  </channel>
  <image rdf:about="http://gmane.org/img/gmane-25t.png">
    <title>Gmane</title>
    <url>http://gmane.org/img/gmane-25t.png</url>
    <link>http://gmane.org</link>
  </image>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11573">
    <title>Getattr question</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11573</link>
    <description>&lt;pre&gt;I'm using the high level interface.

I take the path that is handed to me from the user and pass it so a different server for generating the results of a readdir, getattr, and partially in open.

The parent directories at times filter out extraneous data. This means that stating for "/foo" may take more time then stating for "/foo/bar"

When a user wants to stat for example /foo/bar/baz, I'm seeing lots of calls to not only getattr /foo/bar/baz but each parent as well. With the high level interface, is there any way to get fuse to not issue getattrs for parent directories or at least much less frequently when the user isn't actually cd'ing into each directory? Is this a linux vfs limitation? Must I switch to the low level interface? I would like it to just assume that if its getting a request for /foo/bar/baz, /foo and /foo/bar are always directories.

Thanks,
Kevin
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>Fox, Kevin M</dc:creator>
    <dc:date>2012-05-25T23:22:33</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11570">
    <title>SETATTR and fuse-operations</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11570</link>
    <description>&lt;pre&gt;Hi. Two questions:

1) I there some way to run a keyword search against the fuse-devel list
archives? All the threads are available from the sourceforge
mailarchive, but I don't see a button or interface for doing a search
for a specific topic. Is this a SF members-only functionality or something?

2) In creating my first FUSE-based file system, I have been following
one of the examples that uses the fuse-operations struct, as opposed to
fuse_lowlevel_ops. However, in trying to test my write function (by
editing a file with a text editor) I keep getting the error

code:
--------
unique: 22, opcode: SETATTR (4), nodeid: 3, insize: 128
   unique: 22, error: -38 (Function not implemented), outsize: 16
--------

But fuse_operations doesn't have a setattr function, only
fuse_lowlevel_ops. Does this mean I have to use fuse_lowlevel_ops?

&lt;/pre&gt;</description>
    <dc:creator>Christopher Howard</dc:creator>
    <dc:date>2012-05-25T19:46:41</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11566">
    <title>splice capability bits?</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11566</link>
    <description>&lt;pre&gt;Hi there,

I'm working on adding splice support to go-fuse (for writing to the
kernel); Things seem to be working, but it seems the kernel is not
sending me capability bits.

I am getting:

2012/05/25 13:33:10 Dispatch: INIT, NodeId: 0. data: {7.18 Ra=0x20000
EXPORT_SUPPORT,BIG_WRITES,DONT_MASK,ASYNC_READ,FLOCK_LOCKS,ATOMIC_O_TRUNC,POSIX_LOCKS}

should I instead look at the version number to decide whether to splice?

&lt;/pre&gt;</description>
    <dc:creator>Han-Wen Nienhuys</dc:creator>
    <dc:date>2012-05-25T16:43:12</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11562">
    <title>offset to write function</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11562</link>
    <description>&lt;pre&gt;Regarding the offset parameter passed in to our Fuse write function:
Will this value ever be negative? If it is, is that to be treated as an
error, or does that specify some kind of special address? (E.g., reverse
address from end of data.)

&lt;/pre&gt;</description>
    <dc:creator>Christopher Howard</dc:creator>
    <dc:date>2012-05-24T20:07:35</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11557">
    <title>modified hello_ll: setattr error</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11557</link>
    <description>&lt;pre&gt;Hello.

I have modified the example. I have added hello_ll_setattr and
hello_ll_release. It's not read-only now.

$./hello_ll fs -d
$t$ touch fs/hello
touch: closing `fs/hello': Input/output error

Log:
...
unique: 114, opcode: OPEN (14), nodeid: 2, insize: 48
   unique: 114, success, outsize: 32
unique: 115, opcode: FLUSH (25), nodeid: 2, insize: 64
   unique: 115, error: -38 (Function not implemented), outsize: 16
unique: 116, opcode: SETATTR (4), nodeid: 2, insize: 128
   unique: 116, success, outsize: 120
unique: 117, opcode: RELEASE (18), nodeid: 2, insize: 64
   unique: 117, success, outsize: 16
...

Why It doesn't work?


/*
  FUSE: Filesystem in Userspace
  Copyright (C) 2001-2007  Miklos Szeredi &amp;lt;miklos-sUDqSbJrdHQHWmgEVkV9KA&amp;lt; at &amp;gt;public.gmane.org&amp;gt;

  This program can be distributed under the terms of the GNU GPL.
  See the file COPYING.

  gcc -Wall `pkg-config fuse --cflags --libs` hello_ll.c -o hello_ll
*/

#define FUSE_USE_VERSION 26

#include &amp;lt;fuse_lowlevel.h&amp;gt;
#include &amp;lt;stdio.h&amp;gt;
#include &amp;lt;stdlib.h&amp;gt;
#include &amp;lt;string.h&amp;gt;
#include &amp;lt;errno.h&amp;gt;
#include &amp;lt;fcntl.h&amp;gt;
#include &amp;lt;unistd.h&amp;gt;
#include &amp;lt;assert.h&amp;gt;

static const char *hello_str = "Hello World!\n";
static const char *hello_name = "hello";

static int hello_stat(fuse_ino_t ino, struct stat *stbuf)
{
stbuf-&amp;gt;st_ino = ino;
switch (ino) {
case 1:
stbuf-&amp;gt;st_mode = S_IFDIR | 0755;
stbuf-&amp;gt;st_nlink = 2;
stbuf-&amp;gt;st_uid = 1000;
stbuf-&amp;gt;st_gid = 1000;
break;

case 2:
stbuf-&amp;gt;st_mode = S_IFREG | 0644;
stbuf-&amp;gt;st_nlink = 1;
stbuf-&amp;gt;st_size = strlen(hello_str);
stbuf-&amp;gt;st_uid = 1000;
stbuf-&amp;gt;st_gid = 1000;
break;

default:
return -1;
}
return 0;
}

static void hello_ll_getattr(fuse_req_t req, fuse_ino_t ino,
     struct fuse_file_info *fi)
{
struct stat stbuf;

(void) fi;

memset(&amp;amp;stbuf, 0, sizeof(stbuf));
if (hello_stat(ino, &amp;amp;stbuf) == -1)
fuse_reply_err(req, ENOENT);
else
fuse_reply_attr(req, &amp;amp;stbuf, 1.0);
}

static void hello_ll_setattr(fuse_req_t req, fuse_ino_t ino, struct
stat *attr, int to_set, struct fuse_file_info *fi) {
fuse_reply_attr(req, attr, 300);
}

static void hello_ll_lookup(fuse_req_t req, fuse_ino_t parent, const char *name)
{
struct fuse_entry_param e;

if (parent != 1 || strcmp(name, hello_name) != 0)
fuse_reply_err(req, ENOENT);
else {
memset(&amp;amp;e, 0, sizeof(e));
e.ino = 2;
e.attr_timeout = 1.0;
e.entry_timeout = 1.0;
hello_stat(e.ino, &amp;amp;e.attr);

fuse_reply_entry(req, &amp;amp;e);
}
}

struct dirbuf {
char *p;
size_t size;
};

static void dirbuf_add(fuse_req_t req, struct dirbuf *b, const char *name,
       fuse_ino_t ino)
{
struct stat stbuf;
size_t oldsize = b-&amp;gt;size;
b-&amp;gt;size += fuse_add_direntry(req, NULL, 0, name, NULL, 0);
b-&amp;gt;p = (char *) realloc(b-&amp;gt;p, b-&amp;gt;size);
memset(&amp;amp;stbuf, 0, sizeof(stbuf));
stbuf.st_ino = ino;
fuse_add_direntry(req, b-&amp;gt;p + oldsize, b-&amp;gt;size - oldsize, name, &amp;amp;stbuf,
  b-&amp;gt;size);
}

#define min(x, y) ((x) &amp;lt; (y) ? (x) : (y))

static int reply_buf_limited(fuse_req_t req, const char *buf, size_t bufsize,
     off_t off, size_t maxsize)
{
if (off &amp;lt; bufsize)
return fuse_reply_buf(req, buf + off,
      min(bufsize - off, maxsize));
else
return fuse_reply_buf(req, NULL, 0);
}

static void hello_ll_readdir(fuse_req_t req, fuse_ino_t ino, size_t size,
     off_t off, struct fuse_file_info *fi)
{
(void) fi;

if (ino != 1)
fuse_reply_err(req, ENOTDIR);
else {
struct dirbuf b;

memset(&amp;amp;b, 0, sizeof(b));
dirbuf_add(req, &amp;amp;b, ".", 1);
dirbuf_add(req, &amp;amp;b, "..", 1);
dirbuf_add(req, &amp;amp;b, hello_name, 2);
reply_buf_limited(req, b.p, b.size, off, size);
free(b.p);
}
}

static void hello_ll_open(fuse_req_t req, fuse_ino_t ino,
  struct fuse_file_info *fi)
{
if (ino != 2)
fuse_reply_err(req, EISDIR);
//else if ((fi-&amp;gt;flags &amp;amp; 3) != O_RDONLY)
//fuse_reply_err(req, EACCES);
else
fuse_reply_open(req, fi);
}

static void hello_ll_read(fuse_req_t req, fuse_ino_t ino, size_t size,
  off_t off, struct fuse_file_info *fi)
{
(void) fi;

assert(ino == 2);
reply_buf_limited(req, hello_str, strlen(hello_str), off, size);
}

static void hello_ll_release(fuse_req_t req, fuse_ino_t ino, struct
fuse_file_info *fi) {
fuse_reply_err(req, 0);
}

static struct fuse_lowlevel_ops hello_ll_oper = {
.lookup= hello_ll_lookup,
.getattr= hello_ll_getattr,
.setattr= hello_ll_setattr,
.readdir= hello_ll_readdir,
.open= hello_ll_open,
.read= hello_ll_read,
.release= hello_ll_release,
};

int main(int argc, char *argv[])
{
struct fuse_args args = FUSE_ARGS_INIT(argc, argv);
struct fuse_chan *ch;
char *mountpoint;
int err = -1;

if (fuse_parse_cmdline(&amp;amp;args, &amp;amp;mountpoint, NULL, NULL) != -1 &amp;amp;&amp;amp;
    (ch = fuse_mount(mountpoint, &amp;amp;args)) != NULL) {
struct fuse_session *se;

se = fuse_lowlevel_new(&amp;amp;args, &amp;amp;hello_ll_oper,
       sizeof(hello_ll_oper), NULL);
if (se != NULL) {
if (fuse_set_signal_handlers(se) != -1) {
fuse_session_add_chan(se, ch);
err = fuse_session_loop(se);
fuse_remove_signal_handlers(se);
fuse_session_remove_chan(ch);
}
fuse_session_destroy(se);
}
fuse_unmount(mountpoint, ch);
}
fuse_opt_free_args(&amp;amp;args);

return err ? 1 : 0;
}

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>Андрей Гаврилин</dc:creator>
    <dc:date>2012-05-24T06:18:55</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11554">
    <title>Need to know user for implementing network filesystemsecurity</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11554</link>
    <description>&lt;pre&gt;Hi,

We wrote driver for network filesystem using fuse. It works just fine.
I have problem implementing security around access to files on this network filesystem through fuse driver.
This specific filesystem have ACL for each file, not translatable into user:group permission model on linux.
Filesystem will check user permission when opening file, stat file or ls dir. Problem that I do not know what actual user issued request to fuse, this information is not provided.
We are mounting fuse filesystem as root with -o allow_other option, which allow for everybody on box to access fuse mount. It makes fuse look like regular filesystem.
But to implement security, I need to know what user made call to fuse, and pass this information to network filesystem.

Question - is there any way to find who is actual user performing a call?

This problem did not exist originally in fuse, as it was designed to be run as user itself. But as soon as it is possible to share fuse mount with other users, security implementation come forward.

Did anybody thought how it can be handled? Should it require change of fuse API?

Thank you
Sergey

________________________________

This e-mail and its attachments are intended only for the individual or entity to whom it is addressed and may contain information that is confidential, privileged, inside information, or subject to other restrictions on use or disclosure. Any unauthorized use, dissemination or copying of this transmission or the information in it is prohibited and may be unlawful. If you have received this transmission in error, please notify the sender immediately by return e-mail, and permanently delete or destroy this e-mail, any attachments, and all copies (digital or paper). Unless expressly stated in this e-mail, nothing in this message should be construed as a digital or electronic signature.
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>Sergey Cherepanov</dc:creator>
    <dc:date>2012-05-23T17:49:42</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11550">
    <title>【help】 Why the result shown by 'ls' after fuse mount is '?' coming with such error 'Input/output error'?!</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11550</link>
    <description>&lt;pre&gt;Hi everyone:
    I  download the example of 'helloword' in fuse.sourceforge.net and then
compile correctly,  the version of fuse on my machine is
[fuse-devel-2.7.4-8.el5]  and os-kernel 2.6.18.8;
but the running info is as follows:


[malei&amp;lt; at &amp;gt;xentest ::Wed May 23::~/test-fuse]$ mkdir mnt2
[malei&amp;lt; at &amp;gt;xentest ::Wed May 23::~/test-fuse]$ ls
hello  #hello.c#  hello.c  mnt  mnt2
[malei&amp;lt; at &amp;gt;xentest ::Wed May 23::~/test-fuse]$ ls -l
total 24
-rwxrwxr-x 1 malei malei 10445 May 23 18:36 hello
-rw-rw-r-- 1 malei malei  3572 May 23 18:33 #hello.c#
-rw-rw-r-- 1 malei malei  3466 May 23 18:34 hello.c
?--------- ? ?     ?         ?            ? mnt
drwxrwxr-x 2 malei malei  4096 May 23 18:43 mnt2
[malei&amp;lt; at &amp;gt;xentest ::Wed May 23::~/test-fuse]$ ./hello ./mnt2
[malei&amp;lt; at &amp;gt;xentest ::Wed May 23::~/test-fuse]$ ls -l
total 20
-rwxrwxr-x 1 malei malei 10445 May 23 18:36 hello
-rw-rw-r-- 1 malei malei  3572 May 23 18:33 #hello.c#
-rw-rw-r-- 1 malei malei  3466 May 23 18:34 hello.c
?--------- ? ?     ?         ?            ? mnt
?--------- ? ?     ?         ?            ? mnt2
[malei&amp;lt; at &amp;gt;xentest ::Wed May 23::~/test-fuse]$ ls ./mnt2
ls: ./mnt2: Input/output error
[malei&amp;lt; at &amp;gt;xentest ::Wed May 23::~/test-fuse]$ rpm -qa | grep fuse
fuse-libs-2.7.4-8.el5
fuse-libs-2.7.4-8.el5
fuse-devel-2.7.4-8.el5
fuse-2.7.4-8.el5
fuse-devel-2.7.4-8.el5
[malei&amp;lt; at &amp;gt;xentest ::Wed May 23::~/test-fuse]$ ls ./mnt2
ls: ./mnt2: Input/output error
[malei&amp;lt; at &amp;gt;xentest ::Wed May 23::~/test-fuse]$ uname -r
2.6.18.8-xen
[malei&amp;lt; at &amp;gt;xentest ::Wed May 23::~/test-fuse]$


    Looking forward to your reply and thanks in advance!
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>马磊</dc:creator>
    <dc:date>2012-05-23T11:03:02</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11549">
    <title>setattr error</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11549</link>
    <description>&lt;pre&gt;Hello.

I have tried this.
http://code.google.com/p/python-llfuse/source/browse/contrib/example.py?name=

src/handlers.pxi:

cdef void fuse_setattr (fuse_req_t req, fuse_ino_t ino, c_stat *stat,
                        int to_set, fuse_file_info *fi) with gil:
...
attr = EntryAttributes()
...
ret = fuse_reply_attr(req, &amp;amp;stat_n, timeout)



C++. My code:

void
fsSetattr(fuse_req_t req, fuse_ino_t ino, struct stat *attr, int to_set,
    struct fuse_file_info *fi)
{
  mapAbfNodes::iterator node_iter = nodes.find(ino);

  if (node_iter != nodes.end())
    {
      abfNode&amp;amp; node = nodes[ino];

      if (to_set &amp;amp; FUSE_SET_ATTR_ATIME)
        {
          node.atime = attr-&amp;gt;st_atim;
        }

      if (to_set &amp;amp; FUSE_SET_ATTR_MTIME)
        {
          node.mtime = attr-&amp;gt;st_mtim;
        }

      if (to_set &amp;amp; (FUSE_SET_ATTR_ATIME_NOW | FUSE_SET_ATTR_MTIME_NOW))
        {
          // get time now

          timespec ntime;

          clock_gettime(CLOCK_REALTIME, &amp;amp;ntime);

          if (to_set &amp;amp; FUSE_SET_ATTR_ATIME_NOW)
            {
              attr-&amp;gt;st_atim = ntime;

              node.atime = ntime;
            }

          if (to_set &amp;amp; FUSE_SET_ATTR_MTIME_NOW)
            {
              attr-&amp;gt;st_mtim = ntime;

              node.mtime = ntime;
            }
        }

      res = fuse_reply_attr(req, attr, ATTR_TIMEOUT);
    }
  else
    {
      fuse_reply_err(req, ENOENT);
    }
...

FUSE_SET_ATTR_ATIME_NOW, FUSE_SET_ATTR_MTIME_NOW - Is it correct?

$ python example.py fs
$ touch fs/1
$

It works.

$ ./abfFS fs -f -s -c ../abffs.cfg
$ touch fs/1
touch: closing `fs/1': Input/output error
$ ls -l fs
total 1
-rw-r--r-- 1 root root    0 мая   23 10:09 1
$

Log:

fsCreate
fsSetattr
fsRelease

Why I get this error? I have checked coreutils. It returns EIO.

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
fuse-devel mailing list
fuse-devel&amp;lt; at &amp;gt;lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/fuse-devel
&lt;/pre&gt;</description>
    <dc:creator>Андрей Гаврилин</dc:creator>
    <dc:date>2012-05-23T06:13:14</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11539">
    <title>Current state of the art with inotify-likefunctionality?</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11539</link>
    <description>&lt;pre&gt;Hey gang,

I'm writing a network filesystem using fuse. Remotely, files are
getting added to the filesystem, and I would like graphical file
browsers to find out about remote changes. My fuse client definitely
knows about them, but I'm having a rough time thinking of ways to best
trigger that notification up the stack to the operating system and
various client applications. Obviously the best case scenario would be
if there was inotify/fuse integration, but as far as I can tell from
mailing list backlogs, that's not quite in yet. It appears there's
some filehandle polling now available or something?

So, my question is two-fold:

1) What is the current status for having fuse clients be able to
notify the kernel of changes to the system?

2) From a more pragmatic perspective, if fuse is unable to
as-it-stands provide the functionality I need, I would like to roll
this project out to users with existing versions of Linux. Has anyone
attacked this problem in some other way? Basically - I have Nautilus
open (or Finder on Mac OS X with Fuse4x), and a remote file/directory
changes, and I want to indicate to the user that the change happened -
so I've considered having my fuse client call out to the operating
system to touch files in itself (hacky, and doesn't trigger a creation
notification), having my fuse client call out to actually create files
in itself (hackier, and doesn't work as the file already exists, and
removing it temporarily for the create to succeed is a huge race
condition), having my client dump events into the GLib file monitor
library (only works for things using GLib), making DBus calls to tell
Nautilus to refresh (even more specific than GLib), etc, etc. Has
anyone tried tackling this problem and now has wisdom for me?

Thanks

-JT

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>JT Olds</dc:creator>
    <dc:date>2012-05-22T01:12:21</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11537">
    <title>mounting: ignore if already mounted</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11537</link>
    <description>&lt;pre&gt;This is more of a user question than a developer question, but anyway...
I wanted to create some scripts for mounting various fuse file systems I
use. (E.g., sshfs to my remote server.) I wanted each script to be able
to act in the following way:

1) if FS not mounted, mount it.
 A) if mount succeeds return success
 B) if mount fails, return failure
2) if FS already mounted, return success

The idea being: I can run the script even if I forgot I already mounted
the file system, and in such case, the script won't return a fail code.
However, I'm not sure how to distinguish in my script between situation
1B and 2, because in both cases sshfs (or whatever) returns a failure
code. So, is there a specific command/option I should use to check first
if the file system is mounted? Or some other trick?

&lt;/pre&gt;</description>
    <dc:creator>Christopher Howard</dc:creator>
    <dc:date>2012-05-21T20:21:54</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11536">
    <title>Buffer size issue with python-fuse</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11536</link>
    <description>&lt;pre&gt;Hi,

I am trying to write a filesystem that supports a header for each page
(page size = 4096). I used max_write to decrease the write buffer size to
say 4000 but I see that fuse is increasing it to 4096 again. Then I tried
to increase the buffer size (in case of write) to 8100 (instead of 8192).
In that case as well, fuse gave the buffer size of 4096. Am I missing
something? Or fuse/python-fuse can not work with varying buffer sizes for
writes?


I am using -o max_write=4000 or 8100 for setting the buffer size while
mounting.

Thanks,
Ankit
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>Ankit Srivastava</dc:creator>
    <dc:date>2012-05-20T17:58:01</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11534">
    <title>function of Flags and Lock in read/write calls?</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11534</link>
    <description>&lt;pre&gt;Hi there,

the read/write lowlevel interface passes these data

struct fuse_read_in {
..
__u32read_flags;
__u64lock_owner;
__u32flags;
..
};

for each read/write call. Is this just for convenience? Or can these
be different relative to the locking/flags given when opening the
file? I was thinking of dropping these from the API for read/write
since I can store them in the file handle argument. Does that have me
covered for all cases?

thanks,

--
Han-Wen Nienhuys - hanwen-qWit8jRvyhVmR6Xm/wNWPw&amp;lt; at &amp;gt;public.gmane.org - http://www.xs4all.nl/~hanwen

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>Han-Wen Nienhuys</dc:creator>
    <dc:date>2012-05-19T15:30:16</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11533">
    <title>[PATCH] Bugfix: Prevent deadlock in opendir_func</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11533</link>
    <description>&lt;pre&gt;When returning neither None or an int from opendir, fuse-python does 
not release
the GIL and as a result, the application deadlocks.

This is a simple fix, solving the issue by removing the premature 
return and
instead using the OUT path already present in the EPILOGUE macro.
---

Hi Csaba Henk,

Are you the right person to mail this to?
Your name is in the most recent copyright notice, and I could not find 
a better
source for the maintainer information. If not, I'm sorry, do you know 
who is
the current maintainer, or where I can post this patch for discussion?

If you are the maintainer, could you take a look at this patch?
Currently the bug prevents my file system from running without 
explicitly
enabling single-threaded mode. Furthermore, using dir_class from 
fuse.py
depends on this working correctly, so many users of fuse-python could 
run into
this problem.

Greetings,
Môshe van der Sterre

diff --git a/fuseparts/_fusemodule.c b/fuseparts/_fusemodule.c
index 66b0cc9..6271699 100644
--- a/fuseparts/_fusemodule.c
+++ b/fuseparts/_fusemodule.c
&amp;lt; at &amp;gt;&amp;lt; at &amp;gt; -281,7 +281,8 &amp;lt; at &amp;gt;&amp;lt; at &amp;gt; opendir_func(const char *path, struct 
fuse_file_info *fi)

        fi-&amp;gt;fh = (uintptr_t) v;

-       return 0;
+       ret = 0;
+       goto OUT;

        EPILOGUE
 }


------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
fuse-devel mailing list
fuse-devel&amp;lt; at &amp;gt;lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/fuse-devel
&lt;/pre&gt;</description>
    <dc:creator>Môshe van der Sterre</dc:creator>
    <dc:date>2012-05-18T21:06:40</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11527">
    <title>readdir question about directory entries</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11527</link>
    <description>&lt;pre&gt;Hi

I was trying to figure this out by myself unfortunately my skills in
understanding other people C code is not as good as i wish it should be.

Let me start from begining. I am making a proxy filesystem for educational
reasons. I indent to use fuse in my master thesis. Soo i have a getattr
implementation of fuse and readdir:

static int proxy_readdir(const char *path, void *buf, fuse_fill_dir_t
filler,
                         off_t offset, struct fuse_file_info *fi)
{
        (void) offset;
        (void) fi;

        if (strcmp(path, "/") != 0)
                return -ENOENT;

        filler(buf, ".", NULL, 0);
        filler(buf, "..", NULL, 0);
        DIR *kat;
        char *r,*c=(char *)malloc(100);
        memset(c,0,100);
        strncpy(c,dstdir,strlen(dstdir))
        r = strncat(c,path,100);
        kat = opendir(r);
        if (!kat)
                return errno;
        struct dirent *pliczek;
        while (pliczek=readdir(kat))
        {
                if (strncmp(pliczek-&amp;gt;d_name,".",1) &amp;amp;&amp;amp;
strncmp(pliczek-&amp;gt;d_name,"..",2))
                        if (filler(buf,  pliczek-&amp;gt;d_name, NULL, 0)!=0)
                                return -1;
        }
        closedir(kat);

        return 0;
}

static int proxy_getattr(const char *path, struct stat *stbuf)
{
        int res = 0;

        memset(stbuf, 0, sizeof(struct stat));
        if (strcmp(path, "/") == 0) {
                stbuf-&amp;gt;st_mode = S_IFDIR | 0755;
                stbuf-&amp;gt;st_nlink = 2;
        }/* else if (strcmp(path, meta_path) == 0) {
                stbuf-&amp;gt;st_mode = S_IFREG | 0444;
                stbuf-&amp;gt;st_nlink = 1;
                stbuf-&amp;gt;st_size = 0;
        } */else
        {
                char *r,*c=(char *)malloc(100);
                memset(c,0,100);
                strncpy(c,dstdir,strlen(dstdir));
                r = strncat(c,path,100);
                if (stat(r,stbuf))
                        res = -ENOENT;
        }
        return res;
}

Please forgive me i know this code is messy and realy ugly. It's because i
have worked a long with script languages and i have forgotten good old
fashion C. And i have tried many ways to do the same in C. I had suspected
that i had commited some errors in using structures.

Lets assume that i have this directory tree:
/dstdir
|--/e
|   |--/r
|--/m

All of these files are directories soo when i type ls /dstdir i see both
directories e and m. But when i type ls /dstdir/e i see only r. Everythis
is okay but when i use my 2 functions file system and mount it under /mnt.
Variable dstdir gets the value of /dstdir in my example. And here the
problem begins, when i type ls /mnt i see e and m. But when i type ls
/mnt/e i see nothing. I can type ls /dstdir/e/r and i return 0 error code.
When i type for example ls /mnt/e/g it return an error code. Why readdir
does not show me subdirectories?

My problem is also comming from lack of example in using readdir in this
way (with subdirs). All fuse based filesystems are using old getdir or they
use readdir function like hello.c in examples (static list of files). I
wolud like to ask someone who understant how to use full potential of
readdir including non zero offset field to write an example. These would
help people like me to understand better how to use this project :).

Thx for reading this big mail. I look forward for your reply. :)

Greg.
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>Grzegorz Dwornicki</dc:creator>
    <dc:date>2012-05-17T23:02:19</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11518">
    <title>After 'readdir' operation, gettattr for parent directory is getting called in the midst, even when gettattr for the underlying files/folders is not over</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11518</link>
    <description>&lt;pre&gt;Hello

I hope you are doing well. I am Shobhit Puri, pursuing my undergraduate
from Indian Institute of Information Technology, India.
I am working on integrating FUSE with Globus gridftp client API.

I am facing an error sometimes when another operation wants to use the
globus handle which is already occupied with some other operation.
For eg:- In terms of FUSE operations:
After a call to readdir operation the getattr operation for all the
underlying files and folders in called. Now, if the number of files are
more in number, then, while the gettattr function is already in  progress
for the underlying
files, FUSE calls for getattr operation for the parent directory before the
getattr for the underlying files is over. This gives the following errors:
sometimes it shows "operation already in progress", sometimes "Assertion
node failed in file globus_ftp_client.c at line 331".

I was thinking of creating a connection pool in globus and allocating some
other handle from the pool to the process who is trying to access one
handle which is already in use.
Have I understood the problem clearly? Is it a problem of FUSE code? I am
asking because when I just use FUSE program without integrating it with the
globus gridftp, their is not such call in the midst, when other getattr
operation are still going.

Can you please guide me regrading the same? I would be really thankful to
you for your kind help.

Thanks in advance
With best regards


&lt;/pre&gt;</description>
    <dc:creator>shobhit puri</dc:creator>
    <dc:date>2012-05-16T09:17:01</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11517">
    <title>errors during readdir function</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11517</link>
    <description>&lt;pre&gt;Let's say, in my FUSE readdir function, there is an error; say that the
code that is constructing the directory entry name fails (because malloc
returns NULL or some other such problem) and so I don't want to continue
producing directory entries, but I don't necessarily want to kill my
whole file system program.

What errors am I allowed to return? Can I use anything from errno.h that
seems fitting? Or am I restricted to the subset of a particular
system/POSIX call? (like getdents() or readdir()) In the above
situation, I was thinking that something like EIO or EAGAIN sounded
good, but I'm not sure if they are allowed/acceptable here.

Also, in my readdir function, I return the negative of the error,
correct? (Like in my getattr function.)

&lt;/pre&gt;</description>
    <dc:creator>Christopher Howard</dc:creator>
    <dc:date>2012-05-16T01:09:48</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11515">
    <title>off_t and size_t</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11515</link>
    <description>&lt;pre&gt;This is more of a general programming question than a FUSE question, but
you guys are more likely to be educated about this than most people I know:

Does anyone happen to know the historical or practical reason why off_t
(from the stat structure) is a signed integer, rather than unsigned like
size_t? I'm finding this slightly inconvenient in developing my
FUSE-based file system, because the size of the data to be represented
as a file is stored as the size_t type. So I have to do some kind of
check to make sure the data isn't too large.

Just curious... it seems like it would have been more convenient for us
if off_t and size_t where both unsigned, and I can't think of any reason
why a negative off_t value would be needed. (Files with a negative size
is a strange concept.)

&lt;/pre&gt;</description>
    <dc:creator>Christopher Howard</dc:creator>
    <dc:date>2012-05-15T19:50:34</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11511">
    <title>Fuse + Ecryptfs</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11511</link>
    <description>&lt;pre&gt;Hi,

I am working on Fuse based on file system, i want encrypt my files using
ecryptfs.
but i do not know can we use FUSE + Ecryptfs together.

Please clarify my Doubt.

Thanks &amp;amp; Regards,
Amit Garg
------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>Amit Garg</dc:creator>
    <dc:date>2012-05-15T09:39:24</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11508">
    <title>Get the pid next to the tid??</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11508</link>
    <description>&lt;pre&gt;Hi,

I'm writing a FUSE fs which checks the pid (well it's actually a tid!).

A process get's access when it earlier connected via a socket, en there the
pid via the credentials is stored. Apart from the question that that
pid can also
be a tid, my question is how can I get the pid
(main process pid which is present as /proc/PID)
when the tid is known.

Stef

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
&lt;/pre&gt;</description>
    <dc:creator>Stef Bon</dc:creator>
    <dc:date>2012-05-13T09:31:48</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11506">
    <title>st_nlink and directories</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11506</link>
    <description>&lt;pre&gt;Noob here, trying to implement my first FUSE-based filesystem. Question:
Could someone clarify for me the purpose and significance of st_nlink as
it relates to directories and, more importantly, how this should be used
in FUSE?

From the docs I could find, it seems that st_nlink is usually == the
number of directories entries, including '.' and '..'. However, it seems
that in some other FUSE-based file system I've been using (like sshfs)
this is always set to the value of 1 for directories. (According to "ls -l".

&lt;/pre&gt;</description>
    <dc:creator>Christopher Howard</dc:creator>
    <dc:date>2012-05-12T18:27:05</dc:date>
  </item>
  <item rdf:about="http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11504">
    <title>statvfs vs statfs</title>
    <link>http://comments.gmane.org/gmane.comp.file-systems.fuse.devel/11504</link>
    <description>&lt;pre&gt;Hello,

According to statvfs(3), a file system is supposed to use blocks of
f_frsize bytes when reporting its size:

           struct statvfs {
               unsigned long  f_bsize;    /* file system block size */
               unsigned long  f_frsize;   /* fragment size */
               fsblkcnt_t     f_blocks;   /* size of fs in f_frsize units */

Unfortunately, this leaves applications that use statfs() rather than
statvfs out in the cold, since the statvfs f_bsize value also ends up as
the statfs st_bsize value, and the f_frsize value is lost. Tools like du
therefore report a wrong file system size for fuse file systems that use
different values for f_bsize and f_frsize.

What's the proper way to handle this? Should the FUSE kernel module use
f_frsize instead of f_bsize when handling a statfs request?


Best,
               
   -Nikolaus

&lt;/pre&gt;</description>
    <dc:creator>Nikolaus Rath</dc:creator>
    <dc:date>2012-05-11T13:21:13</dc:date>
  </item>
  <textinput rdf:about="http://search.gmane.org/?group=$group=gmane.comp.file-systems.fuse.devel">
    <title>Search Engine</title>
    <description>Search the mailing list at Gmane</description>
    <name>query</name>
    <link>http://search.gmane.org/?group=$group=gmane.comp.file-systems.fuse.devel</link>
  </textinput>
</rdf:RDF>

