Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 Jan 2009 05:36:59 +0300
From:      pluknet <pluknet@gmail.com>
To:        "Tim Kientzle" <kientzle@freebsd.org>
Cc:        freebsd-hackers@freebsd.org
Subject:   Re: extattr problems?
Message-ID:  <a31046fc0901101836q1f43028awe4f7b0ba746248ac@mail.gmail.com>
In-Reply-To: <49692659.2030306@freebsd.org>
References:  <49692659.2030306@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
2009/1/11 Tim Kientzle <kientzle@freebsd.org>:
> FreeBSD 6.3:
>
> fd = open("test", O_WRONLY | O_CREAT | O_EXCL, 0777);
> n = extattr_set_fd(fd, EXTATTR_NAMESPACE_USER, "testattr", "1234", 4);
>
> After this, fd=3, n is non-zero, errno = 9 (EBADF)
>
> Huh?  I would have expected EOPNOTSUPP if
> extended attributes weren't supported on this
> filesystem.  The file descriptor is clearly
> valid.

Simple guess.
Don't hit me if I'm wrong. :)

You call open() with (O_CREAT | O_EXCL) on an already existing file.
If such then open() returns -1 with EEXIST and subsequent extattr_set_fd() call
with fd (-1) returns EBADF from getvnode() on failed
(td->td_proc->p_fd == NULL)
or
(fp = fdp->fd_ofiles[fd]) == NULL)
checks.

>
> Tim

-- 
wbr,
pluknet



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?a31046fc0901101836q1f43028awe4f7b0ba746248ac>