* Orangefs, v4.5 and the merge window...
@ 2016-03-11 20:18 Mike Marshall
2016-03-11 21:47 ` Al Viro
0 siblings, 1 reply; 25+ messages in thread
From: Mike Marshall @ 2016-03-11 20:18 UTC (permalink / raw)
To: Al Viro, linux-fsdevel, Mike Marshall
Greetings...
The Orangefs for-next tree is:
git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
for-next
I did a test merge (just locally, not pushed out) of Orangefs:for-next
and v4.5-rc7 so I could test out how I think I need to patch for
the follow_link -> get_link change, the diff is below.
On Monday next, assuming that v4.5 is finalized this weekend,
I plan to do a actual merge with v4.5, apply the get_link patch
and push that to Orangefs:for-next.
Hi Al <g>... might we get an ACK this time around?
-Mike
diff --git a/fs/orangefs/inode.c b/fs/orangefs/inode.c
index 4e923ec..50a2172 100644
--- a/fs/orangefs/inode.c
+++ b/fs/orangefs/inode.c
@@ -276,9 +276,12 @@ int orangefs_getattr(struct vfsmount *mnt,
ret = orangefs_inode_getattr(inode, ORANGEFS_ATTR_SYS_ALL_NOHINT, 0);
if (ret == 0) {
generic_fillattr(inode, kstat);
+
/* override block size reported to stat */
orangefs_inode = ORANGEFS_I(inode);
kstat->blksize = orangefs_inode->blksize;
+
+ inode->i_link = ORANGEFS_I(dentry->d_inode)->link_target;
} else {
/* assume an I/O error and flag inode as bad */
gossip_debug(GOSSIP_INODE_DEBUG,
diff --git a/fs/orangefs/symlink.c b/fs/orangefs/symlink.c
index 2b8541a..6418dd6 100644
--- a/fs/orangefs/symlink.c
+++ b/fs/orangefs/symlink.c
@@ -8,22 +8,9 @@
#include "orangefs-kernel.h"
#include "orangefs-bufmap.h"
-static const char *orangefs_follow_link(struct dentry *dentry, void **cookie)
-{
- char *target = ORANGEFS_I(dentry->d_inode)->link_target;
-
- gossip_debug(GOSSIP_INODE_DEBUG,
- "%s: called on %s (target is %p)\n",
- __func__, (char *)dentry->d_name.name, target);
-
- *cookie = target;
-
- return target;
-}
-
struct inode_operations orangefs_symlink_inode_operations = {
.readlink = generic_readlink,
- .follow_link = orangefs_follow_link,
+ .get_link = simple_get_link,
.setattr = orangefs_setattr,
.getattr = orangefs_getattr,
.listxattr = orangefs_listxattr,
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-11 20:18 Orangefs, v4.5 and the merge window Mike Marshall
@ 2016-03-11 21:47 ` Al Viro
2016-03-11 22:35 ` Mike Marshall
2016-03-15 4:04 ` Martin Brandenburg
0 siblings, 2 replies; 25+ messages in thread
From: Al Viro @ 2016-03-11 21:47 UTC (permalink / raw)
To: Mike Marshall; +Cc: linux-fsdevel
On Fri, Mar 11, 2016 at 03:18:57PM -0500, Mike Marshall wrote:
> Greetings...
>
> The Orangefs for-next tree is:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
> for-next
>
> I did a test merge (just locally, not pushed out) of Orangefs:for-next
> and v4.5-rc7 so I could test out how I think I need to patch for
> the follow_link -> get_link change, the diff is below.
>
> On Monday next, assuming that v4.5 is finalized this weekend,
> I plan to do a actual merge with v4.5, apply the get_link patch
> and push that to Orangefs:for-next.
>
> Hi Al <g>... might we get an ACK this time around?
You do realize that it will mean fun few weeks post-merge fixing the rest of
problems, right? FWIW, I think that right now it *is* at the state where it
such fixing is feasible, so modulo that...
As far as I can see, waiting-related logics should be solid by now, ditto
for lifetime rules; sanitizing the input... listxattr still does need fixing
(feed it a negative in ->downcall.resp.listxattr.lengths[0] and watch Bad
Things(tm) happen; no idea why would anyone go for
fs/orangefs/downcall.h:82: __s32 lengths[ORANGEFS_MAX_XATTR_LISTLEN];
for representing string lengths in the first place, but that's what you've
got there and no sanity checks are done on it beyond
if (total + new_op->downcall.resp.listxattr.lengths[i] > size)
goto done;
which is not enough - not with total and size being ssize_t and ...lengths[] -
signed 32bit).
The logics around maintaining the list of orangefs superblocks (add/remove/
traverse) needs fixing; right now ioctl(..., ORANGEFS_DEV_REMOUNT_ALL) will
walk through it with only request_mutex held. Both insertion and removal
are protected only by orangefs_superblocks_lock, and removal is insane -
struct list_head *tmp_safe = NULL; \
struct orangefs_sb_info_s *orangefs_sb = NULL; \
\
spin_lock(&orangefs_superblocks_lock); \
list_for_each_safe(tmp, tmp_safe, &orangefs_superblocks) { \
orangefs_sb = list_entry(tmp, \
struct orangefs_sb_info_s, \
list); \
if (orangefs_sb && (orangefs_sb->sb == sb)) { \
gossip_debug(GOSSIP_SUPER_DEBUG, \
"Removing SB %p from orangefs superblocks\n", \
orangefs_sb); \
list_del(&orangefs_sb->list); \
break; \
} \
} \
spin_unlock(&orangefs_superblocks_lock); \
list_entry is never NULL, for starters, and since there is a pointer back
from superblock to that orangefs_sb_info, there's no reason to walk the entire
list to find one. BTW, both add_orangefs_sb() and remove_orangefs_sb() should
be taken to their sole users.
Sanity aside, there's really no lock in common for list modifiers and list
walker I'd mentioned above. FWIW, I would make orangefs_remount()
take struct orangefs_sb_info instead of struct super_block and flipped the
order of operations in orangefs_kill_sb() - kill_anon_super() *first*, then
remove from the list, then tell the userland that it's going away (i.e.
call orangefs_unmount_sb()). request_mutex in the last one would, at least,
prevent freeing the sucker before orangefs_remount() is done with it.
Walking the list and calling orangefs_remount() on everything would still need
care - you'd need to hold orangefs_superblocks_lock, drop it for actual calls
of orangefs_remount() and have list removal preserve the forward pointer.
That's probably the worst remaining locking issue I see in there. Doable,
if not pleasant...
IIRC, there also had been some unpleasantness with getattr messing ->i_mode
halfway through... <checks> Yes - copy_attributes_to_inode() will be called,
and do
inode->i_mode = orangefs_inode_perms(attrs);
...
inode->i_mode |= S_IFLNK;
...
strncpy(orangefs_inode->link_target,
symname,
ORANGEFS_NAME_MAX);
If nothing else, *another* stat(2) racing with this one could pick the
intermediate value of ->i_mode and proceed to report it to userland.
Another problem is overwriting the symlink body; that can get very
unpleasant, since it might be traversed by another syscall right at that
moment. Any change of a symlink body means "we'd missed it going stale";
there is no way to change a symlink contents without removing it and
creating a new one. Should anything other than orangefs_iget() even bother
copying it? The same goes for inode type changes, of course (regular
vs. directory vs. symlink, etc.).
Speaking of orangefs_iget(), orangefs_set_inode() is pointlessly paranoid.
Not a bug per se, but
struct orangefs_inode_s *orangefs_inode = NULL;
/* Make sure that we have sane parameters */
if (!data || !inode)
return 0;
orangefs_inode = ORANGEFS_I(inode);
if (!orangefs_inode)
return 0;
is all wrong - 'data' is the last argument passed to iget5_locked (i.e. 'ref'
of orangefs_iget()) and that's always an address of either a local variable
or of a field in a large structure, and not even the first one; 'inode'
is never NULL - it's the address of struct inode the caller is about to
insert into the hash chain; ORANGEFS_I() is container_of(), so it's not
going to be NULL either.
I'll need to look through the archived threads to see if there's anything
else left; IIRC, debugfs-related code had seriously nasty issues in case of
allocation failures, but those were fairly isolated. I'll read through the
archive tomorrow and see if there's anything else mentioned and not dealt
with; I don't remember anything really bad, but it had been well over
a hundred mails starting about half a year ago; I sure as hell do not
remember every tangential subthread in all of that, so I'll need to recheck.
I _think_ that all remaining issues can be quickly dealt with, and the code
has zero impact on the rest of the kernel. I wouldn't risk putting it into
-final without fixups, but as for the merge schedule... either merge it
before -rc1 and fix it up by -rc3 or so, or fix it during the window and
merge at around -rc2 - I'm fine with either variant.
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-11 21:47 ` Al Viro
@ 2016-03-11 22:35 ` Mike Marshall
2016-03-14 21:03 ` Mike Marshall
2016-03-15 4:04 ` Martin Brandenburg
1 sibling, 1 reply; 25+ messages in thread
From: Mike Marshall @ 2016-03-11 22:35 UTC (permalink / raw)
To: Al Viro; +Cc: linux-fsdevel, Mike Marshall
> either merge it
> before -rc1 and fix it up by -rc3 or so, or fix it during the
> window and merge at around -rc2 - I'm fine with either
> variant.
We've kept a list we made from all those mail messages
so we could check off things we've tried to address, I
was looking at it yesterday and I know it is not up-to-date,
but we'll work to get it that way. The second option
might be safer unless you help us again, I don't want
to sign a rubber check to Linus.
-Mike
On Fri, Mar 11, 2016 at 4:47 PM, Al Viro <viro@zeniv.linux.org.uk> wrote:
> On Fri, Mar 11, 2016 at 03:18:57PM -0500, Mike Marshall wrote:
>> Greetings...
>>
>> The Orangefs for-next tree is:
>>
>> git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
>> for-next
>>
>> I did a test merge (just locally, not pushed out) of Orangefs:for-next
>> and v4.5-rc7 so I could test out how I think I need to patch for
>> the follow_link -> get_link change, the diff is below.
>>
>> On Monday next, assuming that v4.5 is finalized this weekend,
>> I plan to do a actual merge with v4.5, apply the get_link patch
>> and push that to Orangefs:for-next.
>>
>> Hi Al <g>... might we get an ACK this time around?
>
> You do realize that it will mean fun few weeks post-merge fixing the rest of
> problems, right? FWIW, I think that right now it *is* at the state where it
> such fixing is feasible, so modulo that...
>
> As far as I can see, waiting-related logics should be solid by now, ditto
> for lifetime rules; sanitizing the input... listxattr still does need fixing
> (feed it a negative in ->downcall.resp.listxattr.lengths[0] and watch Bad
> Things(tm) happen; no idea why would anyone go for
> fs/orangefs/downcall.h:82: __s32 lengths[ORANGEFS_MAX_XATTR_LISTLEN];
> for representing string lengths in the first place, but that's what you've
> got there and no sanity checks are done on it beyond
> if (total + new_op->downcall.resp.listxattr.lengths[i] > size)
> goto done;
> which is not enough - not with total and size being ssize_t and ...lengths[] -
> signed 32bit).
>
> The logics around maintaining the list of orangefs superblocks (add/remove/
> traverse) needs fixing; right now ioctl(..., ORANGEFS_DEV_REMOUNT_ALL) will
> walk through it with only request_mutex held. Both insertion and removal
> are protected only by orangefs_superblocks_lock, and removal is insane -
> struct list_head *tmp_safe = NULL; \
> struct orangefs_sb_info_s *orangefs_sb = NULL; \
> \
> spin_lock(&orangefs_superblocks_lock); \
> list_for_each_safe(tmp, tmp_safe, &orangefs_superblocks) { \
> orangefs_sb = list_entry(tmp, \
> struct orangefs_sb_info_s, \
> list); \
> if (orangefs_sb && (orangefs_sb->sb == sb)) { \
> gossip_debug(GOSSIP_SUPER_DEBUG, \
> "Removing SB %p from orangefs superblocks\n", \
> orangefs_sb); \
> list_del(&orangefs_sb->list); \
> break; \
> } \
> } \
> spin_unlock(&orangefs_superblocks_lock); \
> list_entry is never NULL, for starters, and since there is a pointer back
> from superblock to that orangefs_sb_info, there's no reason to walk the entire
> list to find one. BTW, both add_orangefs_sb() and remove_orangefs_sb() should
> be taken to their sole users.
>
> Sanity aside, there's really no lock in common for list modifiers and list
> walker I'd mentioned above. FWIW, I would make orangefs_remount()
> take struct orangefs_sb_info instead of struct super_block and flipped the
> order of operations in orangefs_kill_sb() - kill_anon_super() *first*, then
> remove from the list, then tell the userland that it's going away (i.e.
> call orangefs_unmount_sb()). request_mutex in the last one would, at least,
> prevent freeing the sucker before orangefs_remount() is done with it.
>
> Walking the list and calling orangefs_remount() on everything would still need
> care - you'd need to hold orangefs_superblocks_lock, drop it for actual calls
> of orangefs_remount() and have list removal preserve the forward pointer.
>
> That's probably the worst remaining locking issue I see in there. Doable,
> if not pleasant...
>
> IIRC, there also had been some unpleasantness with getattr messing ->i_mode
> halfway through... <checks> Yes - copy_attributes_to_inode() will be called,
> and do
> inode->i_mode = orangefs_inode_perms(attrs);
> ...
> inode->i_mode |= S_IFLNK;
> ...
> strncpy(orangefs_inode->link_target,
> symname,
> ORANGEFS_NAME_MAX);
> If nothing else, *another* stat(2) racing with this one could pick the
> intermediate value of ->i_mode and proceed to report it to userland.
> Another problem is overwriting the symlink body; that can get very
> unpleasant, since it might be traversed by another syscall right at that
> moment. Any change of a symlink body means "we'd missed it going stale";
> there is no way to change a symlink contents without removing it and
> creating a new one. Should anything other than orangefs_iget() even bother
> copying it? The same goes for inode type changes, of course (regular
> vs. directory vs. symlink, etc.).
>
> Speaking of orangefs_iget(), orangefs_set_inode() is pointlessly paranoid.
> Not a bug per se, but
> struct orangefs_inode_s *orangefs_inode = NULL;
>
> /* Make sure that we have sane parameters */
> if (!data || !inode)
> return 0;
> orangefs_inode = ORANGEFS_I(inode);
> if (!orangefs_inode)
> return 0;
> is all wrong - 'data' is the last argument passed to iget5_locked (i.e. 'ref'
> of orangefs_iget()) and that's always an address of either a local variable
> or of a field in a large structure, and not even the first one; 'inode'
> is never NULL - it's the address of struct inode the caller is about to
> insert into the hash chain; ORANGEFS_I() is container_of(), so it's not
> going to be NULL either.
>
> I'll need to look through the archived threads to see if there's anything
> else left; IIRC, debugfs-related code had seriously nasty issues in case of
> allocation failures, but those were fairly isolated. I'll read through the
> archive tomorrow and see if there's anything else mentioned and not dealt
> with; I don't remember anything really bad, but it had been well over
> a hundred mails starting about half a year ago; I sure as hell do not
> remember every tangential subthread in all of that, so I'll need to recheck.
>
> I _think_ that all remaining issues can be quickly dealt with, and the code
> has zero impact on the rest of the kernel. I wouldn't risk putting it into
> -final without fixups, but as for the merge schedule... either merge it
> before -rc1 and fix it up by -rc3 or so, or fix it during the window and
> merge at around -rc2 - I'm fine with either variant.
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-11 22:35 ` Mike Marshall
@ 2016-03-14 21:03 ` Mike Marshall
2016-03-26 0:21 ` Al Viro
0 siblings, 1 reply; 25+ messages in thread
From: Mike Marshall @ 2016-03-14 21:03 UTC (permalink / raw)
To: Al Viro; +Cc: linux-fsdevel, Mike Marshall, Martin Brandenburg
Hi Al (and everyone)...
git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
for-next
... is updated to v4.5, it has the follow_link -> get_link change.
I worked today to clean up the debugfs (and sysfs) problems,
and we'll keep ticking things off the list, perhaps I should be
posting patches here for review instead automatically updating
for-next when we work on an issue...
We're working on putting "the list" in a place that can be
viewed by everyone and edited by both Martin and myself...
-Mike
On Fri, Mar 11, 2016 at 5:35 PM, Mike Marshall <hubcap@omnibond.com> wrote:
>> either merge it
>> before -rc1 and fix it up by -rc3 or so, or fix it during the
>> window and merge at around -rc2 - I'm fine with either
>> variant.
>
> We've kept a list we made from all those mail messages
> so we could check off things we've tried to address, I
> was looking at it yesterday and I know it is not up-to-date,
> but we'll work to get it that way. The second option
> might be safer unless you help us again, I don't want
> to sign a rubber check to Linus.
>
> -Mike
>
> On Fri, Mar 11, 2016 at 4:47 PM, Al Viro <viro@zeniv.linux.org.uk> wrote:
>> On Fri, Mar 11, 2016 at 03:18:57PM -0500, Mike Marshall wrote:
>>> Greetings...
>>>
>>> The Orangefs for-next tree is:
>>>
>>> git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
>>> for-next
>>>
>>> I did a test merge (just locally, not pushed out) of Orangefs:for-next
>>> and v4.5-rc7 so I could test out how I think I need to patch for
>>> the follow_link -> get_link change, the diff is below.
>>>
>>> On Monday next, assuming that v4.5 is finalized this weekend,
>>> I plan to do a actual merge with v4.5, apply the get_link patch
>>> and push that to Orangefs:for-next.
>>>
>>> Hi Al <g>... might we get an ACK this time around?
>>
>> You do realize that it will mean fun few weeks post-merge fixing the rest of
>> problems, right? FWIW, I think that right now it *is* at the state where it
>> such fixing is feasible, so modulo that...
>>
>> As far as I can see, waiting-related logics should be solid by now, ditto
>> for lifetime rules; sanitizing the input... listxattr still does need fixing
>> (feed it a negative in ->downcall.resp.listxattr.lengths[0] and watch Bad
>> Things(tm) happen; no idea why would anyone go for
>> fs/orangefs/downcall.h:82: __s32 lengths[ORANGEFS_MAX_XATTR_LISTLEN];
>> for representing string lengths in the first place, but that's what you've
>> got there and no sanity checks are done on it beyond
>> if (total + new_op->downcall.resp.listxattr.lengths[i] > size)
>> goto done;
>> which is not enough - not with total and size being ssize_t and ...lengths[] -
>> signed 32bit).
>>
>> The logics around maintaining the list of orangefs superblocks (add/remove/
>> traverse) needs fixing; right now ioctl(..., ORANGEFS_DEV_REMOUNT_ALL) will
>> walk through it with only request_mutex held. Both insertion and removal
>> are protected only by orangefs_superblocks_lock, and removal is insane -
>> struct list_head *tmp_safe = NULL; \
>> struct orangefs_sb_info_s *orangefs_sb = NULL; \
>> \
>> spin_lock(&orangefs_superblocks_lock); \
>> list_for_each_safe(tmp, tmp_safe, &orangefs_superblocks) { \
>> orangefs_sb = list_entry(tmp, \
>> struct orangefs_sb_info_s, \
>> list); \
>> if (orangefs_sb && (orangefs_sb->sb == sb)) { \
>> gossip_debug(GOSSIP_SUPER_DEBUG, \
>> "Removing SB %p from orangefs superblocks\n", \
>> orangefs_sb); \
>> list_del(&orangefs_sb->list); \
>> break; \
>> } \
>> } \
>> spin_unlock(&orangefs_superblocks_lock); \
>> list_entry is never NULL, for starters, and since there is a pointer back
>> from superblock to that orangefs_sb_info, there's no reason to walk the entire
>> list to find one. BTW, both add_orangefs_sb() and remove_orangefs_sb() should
>> be taken to their sole users.
>>
>> Sanity aside, there's really no lock in common for list modifiers and list
>> walker I'd mentioned above. FWIW, I would make orangefs_remount()
>> take struct orangefs_sb_info instead of struct super_block and flipped the
>> order of operations in orangefs_kill_sb() - kill_anon_super() *first*, then
>> remove from the list, then tell the userland that it's going away (i.e.
>> call orangefs_unmount_sb()). request_mutex in the last one would, at least,
>> prevent freeing the sucker before orangefs_remount() is done with it.
>>
>> Walking the list and calling orangefs_remount() on everything would still need
>> care - you'd need to hold orangefs_superblocks_lock, drop it for actual calls
>> of orangefs_remount() and have list removal preserve the forward pointer.
>>
>> That's probably the worst remaining locking issue I see in there. Doable,
>> if not pleasant...
>>
>> IIRC, there also had been some unpleasantness with getattr messing ->i_mode
>> halfway through... <checks> Yes - copy_attributes_to_inode() will be called,
>> and do
>> inode->i_mode = orangefs_inode_perms(attrs);
>> ...
>> inode->i_mode |= S_IFLNK;
>> ...
>> strncpy(orangefs_inode->link_target,
>> symname,
>> ORANGEFS_NAME_MAX);
>> If nothing else, *another* stat(2) racing with this one could pick the
>> intermediate value of ->i_mode and proceed to report it to userland.
>> Another problem is overwriting the symlink body; that can get very
>> unpleasant, since it might be traversed by another syscall right at that
>> moment. Any change of a symlink body means "we'd missed it going stale";
>> there is no way to change a symlink contents without removing it and
>> creating a new one. Should anything other than orangefs_iget() even bother
>> copying it? The same goes for inode type changes, of course (regular
>> vs. directory vs. symlink, etc.).
>>
>> Speaking of orangefs_iget(), orangefs_set_inode() is pointlessly paranoid.
>> Not a bug per se, but
>> struct orangefs_inode_s *orangefs_inode = NULL;
>>
>> /* Make sure that we have sane parameters */
>> if (!data || !inode)
>> return 0;
>> orangefs_inode = ORANGEFS_I(inode);
>> if (!orangefs_inode)
>> return 0;
>> is all wrong - 'data' is the last argument passed to iget5_locked (i.e. 'ref'
>> of orangefs_iget()) and that's always an address of either a local variable
>> or of a field in a large structure, and not even the first one; 'inode'
>> is never NULL - it's the address of struct inode the caller is about to
>> insert into the hash chain; ORANGEFS_I() is container_of(), so it's not
>> going to be NULL either.
>>
>> I'll need to look through the archived threads to see if there's anything
>> else left; IIRC, debugfs-related code had seriously nasty issues in case of
>> allocation failures, but those were fairly isolated. I'll read through the
>> archive tomorrow and see if there's anything else mentioned and not dealt
>> with; I don't remember anything really bad, but it had been well over
>> a hundred mails starting about half a year ago; I sure as hell do not
>> remember every tangential subthread in all of that, so I'll need to recheck.
>>
>> I _think_ that all remaining issues can be quickly dealt with, and the code
>> has zero impact on the rest of the kernel. I wouldn't risk putting it into
>> -final without fixups, but as for the merge schedule... either merge it
>> before -rc1 and fix it up by -rc3 or so, or fix it during the window and
>> merge at around -rc2 - I'm fine with either variant.
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-11 21:47 ` Al Viro
2016-03-11 22:35 ` Mike Marshall
@ 2016-03-15 4:04 ` Martin Brandenburg
2016-03-15 16:45 ` Martin Brandenburg
1 sibling, 1 reply; 25+ messages in thread
From: Martin Brandenburg @ 2016-03-15 4:04 UTC (permalink / raw)
To: Al Viro; +Cc: Mike Marshall, linux-fsdevel
On Fri, 11 Mar 2016, Al Viro wrote:
> IIRC, there also had been some unpleasantness with getattr messing ->i_mode
> halfway through... <checks> Yes - copy_attributes_to_inode() will be called,
> and do
> inode->i_mode = orangefs_inode_perms(attrs);
> ...
> inode->i_mode |= S_IFLNK;
> ...
> strncpy(orangefs_inode->link_target,
> symname,
> ORANGEFS_NAME_MAX);
> If nothing else, *another* stat(2) racing with this one could pick the
> intermediate value of ->i_mode and proceed to report it to userland.
> Another problem is overwriting the symlink body; that can get very
> unpleasant, since it might be traversed by another syscall right at that
> moment. Any change of a symlink body means "we'd missed it going stale";
> there is no way to change a symlink contents without removing it and
> creating a new one. Should anything other than orangefs_iget() even bother
> copying it? The same goes for inode type changes, of course (regular
> vs. directory vs. symlink, etc.).
I thought I fixed most of that when I went over
d_revalidate. But now I see that there's the case that
the server attribute changes after revalidate and before
the operation e.g. chmod. What happens to the inode we
now know is stale? What if two processes notice it's
stale at the same time?
We can go ahead with the chmod even if the object type
has changed since the kernel last saw it. But OrangeFS
doesn't have NFS's sillyrename. So what do we do in the
middle of read when we get ENOENT? We ignore POSIX and
return it to userspace anyway and leave the bad inode
around now.
There's lots of unsanitized error codes from the server
going to userspace now.
Will writing i_mode in one shot fix it?
-- Martin
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-15 4:04 ` Martin Brandenburg
@ 2016-03-15 16:45 ` Martin Brandenburg
2016-03-17 20:45 ` [PATCH] orangefs: getattr work (was: Re: Orangefs, v4.5 and the merge window...) Martin Brandenburg
0 siblings, 1 reply; 25+ messages in thread
From: Martin Brandenburg @ 2016-03-15 16:45 UTC (permalink / raw)
To: Al Viro; +Cc: Mike Marshall, linux-fsdevel
On Tue, 15 Mar 2016, Martin Brandenburg wrote:
> On Fri, 11 Mar 2016, Al Viro wrote:
>
>> IIRC, there also had been some unpleasantness with getattr messing ->i_mode
>> halfway through... <checks> Yes - copy_attributes_to_inode() will be
>> called,
>> and do
>> inode->i_mode = orangefs_inode_perms(attrs);
>> ...
>> inode->i_mode |= S_IFLNK;
>> ...
>> strncpy(orangefs_inode->link_target,
>> symname,
>> ORANGEFS_NAME_MAX);
>> If nothing else, *another* stat(2) racing with this one could pick the
>> intermediate value of ->i_mode and proceed to report it to userland.
>> Another problem is overwriting the symlink body; that can get very
>> unpleasant, since it might be traversed by another syscall right at that
>> moment. Any change of a symlink body means "we'd missed it going stale";
>> there is no way to change a symlink contents without removing it and
>> creating a new one. Should anything other than orangefs_iget() even bother
>> copying it? The same goes for inode type changes, of course (regular
>> vs. directory vs. symlink, etc.).
>
> I thought I fixed most of that when I went over
> d_revalidate. But now I see that there's the case that
> the server attribute changes after revalidate and before
> the operation e.g. chmod. What happens to the inode we
> now know is stale? What if two processes notice it's
> stale at the same time?
>
> We can go ahead with the chmod even if the object type
> has changed since the kernel last saw it. But OrangeFS
> doesn't have NFS's sillyrename. So what do we do in the
> middle of read when we get ENOENT? We ignore POSIX and
> return it to userspace anyway and leave the bad inode
> around now.
>
> There's lots of unsanitized error codes from the server
> going to userspace now.
>
> Will writing i_mode in one shot fix it?
>
> -- Martin
>
This is where I'm going with this. Not done yet, but you
can see where it's going hopefully.
https://github.com/martinbrandenburg/linux.git branch getattr
-- Martin
^ permalink raw reply [flat|nested] 25+ messages in thread
* [PATCH] orangefs: getattr work (was: Re: Orangefs, v4.5 and the merge window...)
2016-03-15 16:45 ` Martin Brandenburg
@ 2016-03-17 20:45 ` Martin Brandenburg
0 siblings, 0 replies; 25+ messages in thread
From: Martin Brandenburg @ 2016-03-17 20:45 UTC (permalink / raw)
To: Mike Marshall; +Cc: Al Viro, linux-fsdevel
Mike,
The following changes since commit 2f83ace37181e445cab83d1d2a3a1dc88a36a814:
orangefs: put register_chrdev immediately before register_filesystem (2016-03-17 14:34:10 -0400)
are available in the git repository at:
https://github.com/martinbrandenburg/linux.git getattr
for you to fetch changes up to 6f0d78264c5c4e0e9da8f98e60da82f87b4a5a99:
orangefs: remove wrapper around mutex_lock(&inode->i_mutex) (2016-03-17 16:33:08 -0400)
----------------------------------------------------------------
Martin Brandenburg (8):
orangefs: remove inode->i_lock wrapper
orangefs: rename orangefs_inode_getattr to orangefs_inode_old_getattr
orangefs: use new orangefs_inode_getattr to create new inodes
orangefs: use new orangefs_inode_getattr to get size in write and llseek
orangefs: use new getattr in inode getattr and permission
orangefs: add orangefs_inode_check_changed
orangefs: refactor inode type or link_target change detection
orangefs: remove wrapper around mutex_lock(&inode->i_mutex)
fs/orangefs/dcache.c | 3 +-
fs/orangefs/file.c | 13 +-
fs/orangefs/inode.c | 19 +-
fs/orangefs/orangefs-kernel.h | 15 +-
fs/orangefs/orangefs-utils.c | 400 ++++++++++++-----------------------------
5 files changed, 133 insertions(+), 317 deletions(-)
I hope this cleans up getattr significantly and fixes several
outstanding bugs. It is tested rather lightly as we have discussed.
-- Martin
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-14 21:03 ` Mike Marshall
@ 2016-03-26 0:21 ` Al Viro
2016-03-26 1:00 ` Mike Marshall
[not found] ` <CA+55aFzLC_pdj_ds82YYab5D7jpYMj26s0Frofxxhk=j7SqnjA@mail.gmail.com>
0 siblings, 2 replies; 25+ messages in thread
From: Al Viro @ 2016-03-26 0:21 UTC (permalink / raw)
To: Mike Marshall; +Cc: linux-fsdevel, Martin Brandenburg, Linus Torvalds
On Mon, Mar 14, 2016 at 05:03:55PM -0400, Mike Marshall wrote:
> Hi Al (and everyone)...
>
> git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
> for-next
>
> ... is updated to v4.5, it has the follow_link -> get_link change.
>
> I worked today to clean up the debugfs (and sysfs) problems,
> and we'll keep ticking things off the list, perhaps I should be
> posting patches here for review instead automatically updating
> for-next when we work on an issue...
>
> We're working on putting "the list" in a place that can be
> viewed by everyone and edited by both Martin and myself...
FWIW, I've ported several cleanups + short read/write on error + lseek
fixes + orangefs_superblocks locking fixes on top of that branch and pushed
into vfs.git#orangefs-untested.
I think it can be merged this cycle; if the fixes above really work, this
+ Martin's latest should leave only the handling of allocation failures in
debugfs-related code.
Linus, would you be OK with that thing going into -rc2? It's self-contained
and I think it's in reasonably sane shape. If not for the last locking fixes,
I would even suggest -rc1 with fixups of debugfs issues during the next week,
but that last commit got no testing whatsoever... ;-/
I would prefer if pull request went from Mike, once he's OK with the whole
set, but as far as I'm concerned the material in his #for-next + my pile above
+ Martin's branch (getattr fixes) should be OK for mainline merge.
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-26 0:21 ` Al Viro
@ 2016-03-26 1:00 ` Mike Marshall
[not found] ` <CA+55aFzLC_pdj_ds82YYab5D7jpYMj26s0Frofxxhk=j7SqnjA@mail.gmail.com>
1 sibling, 0 replies; 25+ messages in thread
From: Mike Marshall @ 2016-03-26 1:00 UTC (permalink / raw)
To: Al Viro; +Cc: linux-fsdevel, Martin Brandenburg, Linus Torvalds, Mike Marshall
Wow... the superblock problem is something we haven't worked on yet...
thanks!
Martin's new code caused some xfstests regressions, but we got past
all but the generic/028 regression... I don't know if Martin worked on
that today, I wasn't in the office.
I had fixed up what I saw wrong in debugfs, so I'll have to look
again for the allocation failures...
I haven't pushed Martin's re-worked code to kernel.org yet, since
we were working through the couple of regressions, have you looked
at it on his github repo, and it doesn't conflict with your patches?
I'll look and see if I can get your patches to load on top of
Martin's patches and get that pushed to kernel.org.
I leave before dawn on Sunday morning for that Linux
Foundation summit in Lake Tahoe, so if we get this
thing merged now (I hope <g>) we'll have to continue
to polish it through the rc's, but that's what they're there
for, right?
-Mike
On Fri, Mar 25, 2016 at 8:21 PM, Al Viro <viro@zeniv.linux.org.uk> wrote:
> On Mon, Mar 14, 2016 at 05:03:55PM -0400, Mike Marshall wrote:
>> Hi Al (and everyone)...
>>
>> git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
>> for-next
>>
>> ... is updated to v4.5, it has the follow_link -> get_link change.
>>
>> I worked today to clean up the debugfs (and sysfs) problems,
>> and we'll keep ticking things off the list, perhaps I should be
>> posting patches here for review instead automatically updating
>> for-next when we work on an issue...
>>
>> We're working on putting "the list" in a place that can be
>> viewed by everyone and edited by both Martin and myself...
>
> FWIW, I've ported several cleanups + short read/write on error + lseek
> fixes + orangefs_superblocks locking fixes on top of that branch and pushed
> into vfs.git#orangefs-untested.
>
> I think it can be merged this cycle; if the fixes above really work, this
> + Martin's latest should leave only the handling of allocation failures in
> debugfs-related code.
>
> Linus, would you be OK with that thing going into -rc2? It's self-contained
> and I think it's in reasonably sane shape. If not for the last locking fixes,
> I would even suggest -rc1 with fixups of debugfs issues during the next week,
> but that last commit got no testing whatsoever... ;-/
>
> I would prefer if pull request went from Mike, once he's OK with the whole
> set, but as far as I'm concerned the material in his #for-next + my pile above
> + Martin's branch (getattr fixes) should be OK for mainline merge.
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
[not found] ` <CA+55aFzLC_pdj_ds82YYab5D7jpYMj26s0Frofxxhk=j7SqnjA@mail.gmail.com>
@ 2016-03-26 1:01 ` Al Viro
2016-03-26 1:07 ` Mike Marshall
[not found] ` <CA+55aFysWS9mP+QgfAR6LZpEbkp61MUPQu0zDoq7cafmr3M8SA@mail.gmail.com>
2016-03-26 1:02 ` Mike Marshall
1 sibling, 2 replies; 25+ messages in thread
From: Al Viro @ 2016-03-26 1:01 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Martin Brandenburg, Mike Marshall, linux-fsdevel
On Fri, Mar 25, 2016 at 05:28:33PM -0700, Linus Torvalds wrote:
> Gaah. I'm going to be traveling starting tomorrow night (red-eye) and I was
> going to cut rc1 tomorrow and then really hope for a calm rc2 week.
>
> At the same time, is live to get this finally merged, about a year after I
> originally thought were would. So I guess I'll take it, even if I hate the
> timing.
Umm... IIRC, there had been precedents when self-contained driver got merged
later than -rc1. Might make more sense than rushing the merge in the last
day of the window, especially since you are travelling...
> There are zero changes outside orangefs itself, and obviously the
> Makefile/KConfig file to get it all enabled?
Yes.
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
[not found] ` <CA+55aFzLC_pdj_ds82YYab5D7jpYMj26s0Frofxxhk=j7SqnjA@mail.gmail.com>
2016-03-26 1:01 ` Al Viro
@ 2016-03-26 1:02 ` Mike Marshall
1 sibling, 0 replies; 25+ messages in thread
From: Mike Marshall @ 2016-03-26 1:02 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Al Viro, Martin Brandenburg, linux-fsdevel
There's the orangefs.txt in Documentation.
And I'm listed as a maintainer, I forget what file that's in...
But you're right, we mostly don't touch anything out of fs/orangefs...
-Mike
On Fri, Mar 25, 2016 at 8:28 PM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
> On Mar 25, 2016 5:21 PM, "Al Viro" <viro@zeniv.linux.org.uk> wrote:
>>
>> Linus, would you be OK with that thing going into -rc2? It's
>> self-contained
>> and I think it's in reasonably sane shape. If not for the last locking
>> fixes,
>> I would even suggest -rc1 with fixups of debugfs issues during the next
>> week,
>> but that last commit got no testing whatsoever... ;-/
>
> Gaah. I'm going to be traveling starting tomorrow night (red-eye) and I was
> going to cut rc1 tomorrow and then really hope for a calm rc2 week.
>
> At the same time, is live to get this finally merged, about a year after I
> originally thought were would. So I guess I'll take it, even if I hate the
> timing.
>
> There are zero changes outside orangefs itself, and obviously the
> Makefile/KConfig file to get it all enabled?
>
> Linus
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-26 1:01 ` Al Viro
@ 2016-03-26 1:07 ` Mike Marshall
[not found] ` <CA+55aFysWS9mP+QgfAR6LZpEbkp61MUPQu0zDoq7cafmr3M8SA@mail.gmail.com>
1 sibling, 0 replies; 25+ messages in thread
From: Mike Marshall @ 2016-03-26 1:07 UTC (permalink / raw)
To: Al Viro; +Cc: Linus Torvalds, Martin Brandenburg, linux-fsdevel, Mike Marshall
If Al's patches load on top of Martin's patches without conflict, I can probably
get it all merged and minimally tested before noon my time (eastern
US) tomorrow... that's probably late for where y'all are though...
-Mike
On Fri, Mar 25, 2016 at 9:01 PM, Al Viro <viro@zeniv.linux.org.uk> wrote:
> On Fri, Mar 25, 2016 at 05:28:33PM -0700, Linus Torvalds wrote:
>> Gaah. I'm going to be traveling starting tomorrow night (red-eye) and I was
>> going to cut rc1 tomorrow and then really hope for a calm rc2 week.
>>
>> At the same time, is live to get this finally merged, about a year after I
>> originally thought were would. So I guess I'll take it, even if I hate the
>> timing.
>
> Umm... IIRC, there had been precedents when self-contained driver got merged
> later than -rc1. Might make more sense than rushing the merge in the last
> day of the window, especially since you are travelling...
>
>> There are zero changes outside orangefs itself, and obviously the
>> Makefile/KConfig file to get it all enabled?
>
> Yes.
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
[not found] ` <CA+55aFysWS9mP+QgfAR6LZpEbkp61MUPQu0zDoq7cafmr3M8SA@mail.gmail.com>
@ 2016-03-26 3:55 ` Mike Marshall
2016-03-26 4:30 ` Al Viro
0 siblings, 1 reply; 25+ messages in thread
From: Mike Marshall @ 2016-03-26 3:55 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Al Viro, Martin Brandenburg, linux-fsdevel
I got Al's patches merged with Martin's patches and only
one pretty simple conflict to fix.
In testing, most things seem to work right, but at least one
important thing is busted: umount...
unmounting the filesystem just gets the kernel into a forever loop,
"ERROR: fs_mount_pending 147936488" just goes on
forever until I interrupt the umount command:
Mar 25 23:42:00 be1 kernel: [ 156.990737] Releasing OP (ffff8800189a0000: 103)
Mar 25 23:42:00 be1 kernel: [ 156.991366] orangefs_kill_sb: called
Mar 25 23:42:00 be1 kernel: [ 156.991401] orangefs_destroy_inode:
deallocated ffff880018998000 destroying inode
00001000-0000-0000-0000-000000000000
Mar 25 23:42:00 be1 kernel: [ 156.991414] orangefs_unmount_sb called
on sb ffff880018810000
Mar 25 23:42:00 be1 kernel: [ 156.991416] Alloced OP
(ffff8800189a0000: 104 OP_FS_UMOUNT)
Mar 25 23:42:00 be1 kernel: [ 156.991417] Attempting ORANGEFS Unmount
via host tcp://be1:3334/orangefs
Mar 25 23:42:00 be1 kernel: [ 156.991418] service_operation:
orangefs_fs_umount op:ffff8800189a0000: process:umount: pid:1124:
Mar 25 23:42:00 be1 kernel: [ 156.991419] service_operation:
op:OP_FS_UMOUNT: op_state:1: process:umount:
Mar 25 23:42:00 be1 kernel: [ 156.991435] orangefs: skipping op tag
104 OP_FS_UMOUNT
Mar 25 23:42:00 be1 kernel: [ 156.991435] orangefs: ERROR:
fs_mount_pending 147936488
Mar 25 23:42:00 be1 kernel: [ 156.991440] orangefs: skipping op tag
104 OP_FS_UMOUNT
The github repo has all the patches, I didn't think I
should push it to the orangefs for-next branch like this.
https://github.com/hubcapsc/linux/tree/current
I'll look to see if I can see it, I guess it has something to
do with Al's superblock re-do...
-Mike
On Fri, Mar 25, 2016 at 9:11 PM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
>
> On Mar 25, 2016 18:01, "Al Viro" <viro@zeniv.linux.org.uk> wrote:
>>
>> Umm... IIRC, there had been precedents when self-contained driver got
>> merged
>> later than -rc1.
>
> I do it if there is some reason for it, yes.
>
> In particular, for things like consumer hardware that has not had a driver
> for it, I'll merge new drivers later, because missing one release nasty be a
> big deal if some average-Joe machine just doesn't work. But even then it's
> not just "random driver", but something that keeps that machine from working
> entirely - disk or network or GPU or USB or something core like that.
>
> So it's not just "new driver that cannot cause a regression". It's also
> about the driver being important to people who can't reasonably be expected
> to compile their own kernel..
>
> There is little reason to do an expedited out-of-the-merge-window merge for
> something like orangefs, though.
>
> Linus
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-26 3:55 ` Mike Marshall
@ 2016-03-26 4:30 ` Al Viro
2016-03-26 12:07 ` Mike Marshall
0 siblings, 1 reply; 25+ messages in thread
From: Al Viro @ 2016-03-26 4:30 UTC (permalink / raw)
To: Mike Marshall; +Cc: Linus Torvalds, Martin Brandenburg, linux-fsdevel
On Fri, Mar 25, 2016 at 11:55:31PM -0400, Mike Marshall wrote:
> I'll look to see if I can see it, I guess it has something to
> do with Al's superblock re-do...
It does; with this approach you would need to add ORANGEFS_VFS_OP_FS_UNMOUNT
to the whitelist in orangefs_devreq_read() - the
!(op->upcall.type ==
ORANGEFS_VFS_OP_FS_MOUNT ||
op->upcall.type ==
ORANGEFS_VFS_OP_GETATTR)) {
thing. Sorry, should've thought about that...
Alternatively, we could do orangefs_unmount_sb(sb) before removing from
the list, and add mutex_lock/mutex_unlock of request_mutex right before
that kfree() in the very end. Same effect in terms of list protection and
closer to your current logics.
Try this incremental (to be folded into "fix orangefs_superblock locking"):
diff --git a/fs/orangefs/super.c b/fs/orangefs/super.c
index bf78870..bb3dc14 100644
--- a/fs/orangefs/super.c
+++ b/fs/orangefs/super.c
@@ -514,6 +514,12 @@ void orangefs_kill_sb(struct super_block *sb)
/* provided sb cleanup */
kill_anon_super(sb);
+ /*
+ * issue the unmount to userspace to tell it to remove the
+ * dynamic mount info it has for this superblock
+ */
+ orangefs_unmount_sb(sb);
+
/* remove the sb from our list of orangefs specific sb's */
spin_lock(&orangefs_superblocks_lock);
@@ -522,10 +528,11 @@ void orangefs_kill_sb(struct super_block *sb)
spin_unlock(&orangefs_superblocks_lock);
/*
- * issue the unmount to userspace to tell it to remove the
- * dynamic mount info it has for this superblock
+ * make sure that ORANGEFS_DEV_REMOUNT_ALL loop that might've seen us
+ * gets completed before we free the damn thing.
*/
- orangefs_unmount_sb(sb);
+ mutex_lock(&request_mutex);
+ mutex_unlock(&request_mutex);
/* free the orangefs superblock private data */
kfree(ORANGEFS_SB(sb));
^ permalink raw reply related [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-26 4:30 ` Al Viro
@ 2016-03-26 12:07 ` Mike Marshall
2016-03-26 14:47 ` Al Viro
0 siblings, 1 reply; 25+ messages in thread
From: Mike Marshall @ 2016-03-26 12:07 UTC (permalink / raw)
To: Al Viro; +Cc: Linus Torvalds, Martin Brandenburg, linux-fsdevel, Mike Marshall
Yay, Al, that did it, thanks!
I've tested, and updated the for-next branch at kernel.org...
Linus, if it is not too late, can you pull from:
git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
for-next
-Mike
On Sat, Mar 26, 2016 at 12:30 AM, Al Viro <viro@zeniv.linux.org.uk> wrote:
> On Fri, Mar 25, 2016 at 11:55:31PM -0400, Mike Marshall wrote:
>
>> I'll look to see if I can see it, I guess it has something to
>> do with Al's superblock re-do...
>
> It does; with this approach you would need to add ORANGEFS_VFS_OP_FS_UNMOUNT
> to the whitelist in orangefs_devreq_read() - the
> !(op->upcall.type ==
> ORANGEFS_VFS_OP_FS_MOUNT ||
> op->upcall.type ==
> ORANGEFS_VFS_OP_GETATTR)) {
> thing. Sorry, should've thought about that...
>
> Alternatively, we could do orangefs_unmount_sb(sb) before removing from
> the list, and add mutex_lock/mutex_unlock of request_mutex right before
> that kfree() in the very end. Same effect in terms of list protection and
> closer to your current logics.
>
> Try this incremental (to be folded into "fix orangefs_superblock locking"):
>
> diff --git a/fs/orangefs/super.c b/fs/orangefs/super.c
> index bf78870..bb3dc14 100644
> --- a/fs/orangefs/super.c
> +++ b/fs/orangefs/super.c
> @@ -514,6 +514,12 @@ void orangefs_kill_sb(struct super_block *sb)
> /* provided sb cleanup */
> kill_anon_super(sb);
>
> + /*
> + * issue the unmount to userspace to tell it to remove the
> + * dynamic mount info it has for this superblock
> + */
> + orangefs_unmount_sb(sb);
> +
> /* remove the sb from our list of orangefs specific sb's */
>
> spin_lock(&orangefs_superblocks_lock);
> @@ -522,10 +528,11 @@ void orangefs_kill_sb(struct super_block *sb)
> spin_unlock(&orangefs_superblocks_lock);
>
> /*
> - * issue the unmount to userspace to tell it to remove the
> - * dynamic mount info it has for this superblock
> + * make sure that ORANGEFS_DEV_REMOUNT_ALL loop that might've seen us
> + * gets completed before we free the damn thing.
> */
> - orangefs_unmount_sb(sb);
> + mutex_lock(&request_mutex);
> + mutex_unlock(&request_mutex);
>
> /* free the orangefs superblock private data */
> kfree(ORANGEFS_SB(sb));
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-26 12:07 ` Mike Marshall
@ 2016-03-26 14:47 ` Al Viro
2016-03-26 15:34 ` Mike Marshall
0 siblings, 1 reply; 25+ messages in thread
From: Al Viro @ 2016-03-26 14:47 UTC (permalink / raw)
To: Mike Marshall; +Cc: Linus Torvalds, Martin Brandenburg, linux-fsdevel
On Sat, Mar 26, 2016 at 08:07:58AM -0400, Mike Marshall wrote:
> Yay, Al, that did it, thanks!
>
> I've tested, and updated the for-next branch at kernel.org...
>
> Linus, if it is not too late, can you pull from:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
> for-next
Shortlog and diffstat would be a good idea... Something like the output of
git request-pull origin git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git for-next
Longer term you want a remote to avoid typing that crap every time; just be
careful to set both url (git:// one) and pushurl (ssh:// equivalent) for
it. The former will be usable for somebody to pull from you (and go into
the output of git request-pull), the latter is obviously for pushes...
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-26 14:47 ` Al Viro
@ 2016-03-26 15:34 ` Mike Marshall
2016-03-26 15:50 ` Al Viro
0 siblings, 1 reply; 25+ messages in thread
From: Mike Marshall @ 2016-03-26 15:34 UTC (permalink / raw)
To: Al Viro; +Cc: Linus Torvalds, Martin Brandenburg, linux-fsdevel
OK... I think this is what you're after:
$ git request-pull ko/for-next
git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
for-next
The following changes since commit 45996492e5c85aa0ac93a95d1b2d1ed56851c865:
orangefs: fix orangefs_superblock locking (2016-03-26 07:22:00 -0400)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git for-next
for you to fetch changes up to 45996492e5c85aa0ac93a95d1b2d1ed56851c865:
orangefs: fix orangefs_superblock locking (2016-03-26 07:22:00 -0400)
----------------------------------------------------------------
I understand about setting up URL types in your second paragraph,
and I have a github tree that I keep current, I thought we all sort of focused
on kernel.org being the "canonical place" around here... I'll pay more attention
to other pull/push requests on the mailing list...
-Mike
On Sat, Mar 26, 2016 at 10:47 AM, Al Viro <viro@zeniv.linux.org.uk> wrote:
> On Sat, Mar 26, 2016 at 08:07:58AM -0400, Mike Marshall wrote:
>> Yay, Al, that did it, thanks!
>>
>> I've tested, and updated the for-next branch at kernel.org...
>>
>> Linus, if it is not too late, can you pull from:
>>
>> git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
>> for-next
>
> Shortlog and diffstat would be a good idea... Something like the output of
> git request-pull origin git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git for-next
>
> Longer term you want a remote to avoid typing that crap every time; just be
> careful to set both url (git:// one) and pushurl (ssh:// equivalent) for
> it. The former will be usable for somebody to pull from you (and go into
> the output of git request-pull), the latter is obviously for pushes...
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-26 15:34 ` Mike Marshall
@ 2016-03-26 15:50 ` Al Viro
2016-03-26 17:36 ` Mike Marshall
0 siblings, 1 reply; 25+ messages in thread
From: Al Viro @ 2016-03-26 15:50 UTC (permalink / raw)
To: Mike Marshall; +Cc: Linus Torvalds, Martin Brandenburg, linux-fsdevel
On Sat, Mar 26, 2016 at 11:34:22AM -0400, Mike Marshall wrote:
> OK... I think this is what you're after:
>
> $ git request-pull ko/for-next
> git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
> for-next
>
> The following changes since commit 45996492e5c85aa0ac93a95d1b2d1ed56851c865:
>
> orangefs: fix orangefs_superblock locking (2016-03-26 07:22:00 -0400)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git for-next
>
> for you to fetch changes up to 45996492e5c85aa0ac93a95d1b2d1ed56851c865:
>
> orangefs: fix orangefs_superblock locking (2016-03-26 07:22:00 -0400)
Er... That ought to have generated shortlog and diffstat as well; the point
is mostly to see what's intended to be included into pull.
See "16) Sending "git pull" requests" in Documentation/SubmittingPatches:
| A pull request should also include an overall message saying what will be
| included in the request, a "git shortlog" listing of the patches
| themselves, and a diffstat showing the overall effect of the patch series.
| The easiest way to get all this information together is, of course, to let
| git do it for you with the "git request-pull" command.
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-26 15:50 ` Al Viro
@ 2016-03-26 17:36 ` Mike Marshall
2016-03-26 18:28 ` Al Viro
0 siblings, 1 reply; 25+ messages in thread
From: Mike Marshall @ 2016-03-26 17:36 UTC (permalink / raw)
To: Al Viro; +Cc: Linus Torvalds, Martin Brandenburg, linux-fsdevel, Mike Marshall
This is harder than going upstream <g>...
I think I'm doing the same thing greg kh did here, only he
figured it out (and didn't say how he did it right)...
https://lkml.org/lkml/2012/10/1/293
I made a tag, and...
$ git request-pull for-next
git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
ofs-pull-tag-1
The following changes since commit 45996492e5c85aa0ac93a95d1b2d1ed56851c865:
orangefs: fix orangefs_superblock locking (2016-03-26 07:22:00 -0400)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
tags/ofs-pull-tag-1
for you to fetch changes up to 45996492e5c85aa0ac93a95d1b2d1ed56851c865:
orangefs: fix orangefs_superblock locking (2016-03-26 07:22:00 -0400)
----------------------------------------------------------------
Orangefs: pull-tag-1
----------------------------------------------------------------
I think that when I made my tag I should have specified some particular
commit, instead of just: "git tag -a ofs-pull-tag-1" ...
but which commit should I have specified, surely not 001bf455d?
-Mike
On Sat, Mar 26, 2016 at 11:50 AM, Al Viro <viro@zeniv.linux.org.uk> wrote:
> On Sat, Mar 26, 2016 at 11:34:22AM -0400, Mike Marshall wrote:
>> OK... I think this is what you're after:
>>
>> $ git request-pull ko/for-next
>> git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
>> for-next
>>
>> The following changes since commit 45996492e5c85aa0ac93a95d1b2d1ed56851c865:
>>
>> orangefs: fix orangefs_superblock locking (2016-03-26 07:22:00 -0400)
>>
>> are available in the git repository at:
>>
>> git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git for-next
>>
>> for you to fetch changes up to 45996492e5c85aa0ac93a95d1b2d1ed56851c865:
>>
>> orangefs: fix orangefs_superblock locking (2016-03-26 07:22:00 -0400)
>
> Er... That ought to have generated shortlog and diffstat as well; the point
> is mostly to see what's intended to be included into pull.
>
> See "16) Sending "git pull" requests" in Documentation/SubmittingPatches:
>
> | A pull request should also include an overall message saying what will be
> | included in the request, a "git shortlog" listing of the patches
> | themselves, and a diffstat showing the overall effect of the patch series.
> | The easiest way to get all this information together is, of course, to let
> | git do it for you with the "git request-pull" command.
>
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-26 17:36 ` Mike Marshall
@ 2016-03-26 18:28 ` Al Viro
2016-03-26 18:37 ` Al Viro
0 siblings, 1 reply; 25+ messages in thread
From: Al Viro @ 2016-03-26 18:28 UTC (permalink / raw)
To: Mike Marshall; +Cc: Linus Torvalds, Martin Brandenburg, linux-fsdevel
On Sat, Mar 26, 2016 at 01:36:04PM -0400, Mike Marshall wrote:
> This is harder than going upstream <g>...
>
> I think I'm doing the same thing greg kh did here, only he
> figured it out (and didn't say how he did it right)...
>
> https://lkml.org/lkml/2012/10/1/293
>
> I made a tag, and...
>
> $ git request-pull for-next
> git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
> ofs-pull-tag-1
> The following changes since commit 45996492e5c85aa0ac93a95d1b2d1ed56851c865:
>
> orangefs: fix orangefs_superblock locking (2016-03-26 07:22:00 -0400)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
> tags/ofs-pull-tag-1
>
> for you to fetch changes up to 45996492e5c85aa0ac93a95d1b2d1ed56851c865:
>
> orangefs: fix orangefs_superblock locking (2016-03-26 07:22:00 -0400)
Oh, for... The point is, *don't* *trim* *diffstat* *and* *shortlog*. For
your branch that should've been as below and it belongs in pull request,
preferably - with [git pull] somewhere in the subject. The lines from
dashes below to the end of this reply should have been produced by
git request-pull and should've been a part of your posting.
----------------------------------------------------------------
Al Viro (67):
orangefs: explicitly pass the size to pvfs_bufmap_copy_to_iovec()
pvfs_bufmap_copy_from_iovec(): don't rely upon size being equal to iov_iter_count(iter)
orangefs: make postcopy_buffers() take iov_iter
orangefs: make precopy_buffers() take iov_iter
orangefs: make wait_for_direct_io() take iov_iter
orangefs: don't bother with splitting iovecs
orangefs: make do_readv_writev() take iov_iter
orangefs: make pvfs2_inode_read() take iov_iter
orangefs: kill kmap/kunmap wrappers
orangefs: use get_user_pages_fast(), not get_user_pages()
orangefs: double iput() in case of d_make_root() failure
orangefs: kill struct pvfs2_mount_sb_info_s
pvfs2_fill_sb(): use kzalloc()
orangefs: kill pointless ->link() and ->mknod()
orangefs: sanitize pvfs2_convert_time_field()
orangefs: switch decode_dirents() to use of kcalloc()
orangefs: get rid of dec_string and enc_string
orangefs: don't leave uninitialized data in ->trailer_buf
orangefs: validate the response in decode_dirents()
fs: out of bounds on stack in iov_iter_advance
orangefs: use DEFINE_MUTEX (and mutex_init() had been too late)
orangefs: generic_file_open() is pointless for character devices
orangefs: ->poll() is only called between successful ->open() and ->release()
orangefs: kill ioctl32 rudiments
orangefs: ->poll() doesn't need spinlock
orangefs: get rid of <censored> macros
orangefs: kill orangefs_inode_s ->list
make orangefs_clean_up_interrupted_operation() static
orangefs: make wait_for_...downcall() static
orangefs: move wakeups into set_op_state_{serviced,purged}()
orangefs: make wait_for_...downcall() static
orangefs: move wakeups into set_op_state_{serviced,purged}()
orangefs: nothing should remain in request list and in hash
orangefs: make sure that reopening pvfs2-req won't overlap with the end of close
orangefs: hopefully saner op refcounting and locking
orangefs: remove cargo-culting spin_lock_irqsave() in service_operation()
orangefs: reduce nesting in wait_for_matching_downcall()
orangefs_clean_up_interrupted_operation: call with op->lock held
orangefs: get rid of MSECS_TO_JIFFIES
if ORANGEFS_VFS_OP_FILE_IO request had been given up, don't bother waiting
orangefs: don't reinvent completion.h...
orangefs: move handle_io_error() to file.c
orangefs: clean up op_alloc()
orangefs: avoid freeing a slot twice in wait_for_direct_io()
orangefs: wait_for_direct_io(): restore the position in iter when restarting
orangefs: get rid of handle_io_error()
get rid of bufmap argument of orangefs_bufmap_put()
orangefs: delay freeing slot until cancel completes
orangefs: get rid of loop in wait_for_matching_downcall()
orangefs: sanitize handling of request list
service_operation(): don't block signals, just use ..._killable
orangefs: lift handling of timeouts and attempts count to service_operation()
orangefs_bufmap_..._query(): don't bother with refcounts
orangefs: bufmap rewrite
orangefs_readdir_index_put(): get rid of bufmap argument
orangefs: get rid of op->done
orangefs: set correct ->downcall.status on failing to copy reply from daemon
orangefs: have ..._clean_interrupted_...() wait for copy to/from daemon
orangefs: get rid of op refcounts
orangefs: get rid of readdir_handle_s
orangefs_copy_{to,from}_bufmap(): don't pass bufmap pointer
orangefs: saner calling conventions for getting a slot
orangefs-bufmap.h: trim unused junk
orangefs: sanitize ->llseek()
orangefs: have ->kill_sb() evict the VFS side of things first
orangefs: fix do_readv_writev() handling of error halfway through
orangefs: fix orangefs_superblock locking
Arnd Bergmann (3):
orangefs: fix typo in ornagefs_inode_lock
orangefs: avoid time conversion function
orangefs: remove unused 'diff' function
Guenter Roeck (1):
Orangefs: Swap order of include files
Julia Lawall (1):
OrangeFS: constify export_operations structures
Martin Brandenburg (40):
Orangefs: Use readonly mmap since writepage is not implemented.
Orangefs: Clean up error decoding.
Orangefs: Remove unused #defines from signal blocking code.
Orangefs: Remove upcall trailers which are not used.
Orangefs: Clean up pvfs2_devreq_read.
Orangefs: do not finalize bufmap if it was never initialized.
orangefs: Remove ``aligned'' upcall and downcall length macros.
orangefs: Change visibility of several bufmap helpers to static.
orangefs: Remove useless inline qualifier from bufmap functions.
orangefs: Do not unref if there is no bufmap.
orangefs: Fix some more global namespace pollution.
orangefs: Util functions shouldn't operate on inode where it can be avoided.
orangefs: Fix revalidate.
orangefs: Only compare attributes specified in orangefs_inode_getattr.
orangefs: Implement inode_operations->permission().
orangefs: Do not retrieve size from servers unless it it necessary.
orangefs: use S_ISREG(mode) and friends instead of mode & S_IFREG.
orangefs: free readdir buffer index before the dir_emit loop
orangefs: don't d_drop in d_revalidate since the caller will
orangefs: use ORANGEFS_NAME_LEN everywhere; remove ORANGEFS_NAME_MAX
orangefs: remove vestigial async io code
orangefs: we never lookup with sym_follow set
orangefs: clean up fill_default_sys_attrs
orangefs: Avoid symlink upcall if target is too long.
orangefs: make fs_mount_pending static
orangefs: remove unused reference to xattr key length
orangefs: sanitize listxattr and return EIO on impossible values
orangefs: remove paranoia in orangefs_set_inode
orangefs: put register_chrdev immediately before register_filesystem
orangefs: remove inode->i_lock wrapper
orangefs: rename orangefs_inode_getattr to orangefs_inode_old_getattr
orangefs: use new orangefs_inode_getattr to create new inodes
orangefs: use new orangefs_inode_getattr to get size in write and llseek
orangefs: use new getattr in inode getattr and permission
orangefs: use new getattr for revalidate and remove old getattr
orangefs: refactor inode type or link_target change detection
orangefs: remove wrapper around mutex_lock(&inode->i_mutex)
orangefs: remove needless wrapper around GFP_KERNEL
orangefs: move code which sets i_link to orangefs_inode_getattr
ornagefs: ensure that truncate has an up to date inode size
Mike Marshall (61):
Orangefs: kernel client part 1
Orangefs: kernel client part 2
Orangefs: kernel client part 3
Orangefs: kernel client part 4
Orangefs: kernel client part 5
Orangefs: kernel client part 6
Orangefs: kernel client part 7
Orangefs: kernel client update 1.
Orangefs: sooth most sparse complaints
Orangefs: address problems found by static checker
Orangefs: large integer implicitly truncated to unsigned type
Orangefs: use inode_set_bytes for directories
Orangefs: use iov_iter interface
Orangefs: fix dir_emit code in pvfs2_readdir.
Orangefs: put PVFS_util_min out of its misery.
Orangefs: choose return codes from among the expected ones.
Orangefs: Don't opencode memcpy.
Orangefs: update signal blocking code before Oleg sees it.
Orangefs: don't use mount_nodev, use sget directly.
Orangefs: fix some checkpatch.pl complaints that had creeped in.
Orangefs: set pos after generic_write_checks
Orangefs: fix gossip statement
Orangefs: Merge tag 'v4.4-rc1' into for-next
Orangefs: change pvfs2 filenames to orangefs
Orangefs: don't expose internal details of pathname resolution to userspace.
Orangefs: don't keep checking stuff in on Friday afternoon.
Orangefs: improve comments
Orangef: remove overlooked old-style userspace debug parts
Orangefs: de-uglify orangefs_devreq_writev, and devorangefs-req.c in general
Orangefs: Don't wait the old-fashioned way.
Orangefs: don't use deprecated xattr defines.
Orangefs: validate resp.listxattr.returned_count
Orangefs: don't change EXTRAVERSION
Orangefs: don't trigger copy_attributes_to_inode from d_revalidate.
Orangefs: add orangefs to MAINTAINERS
Orangefs: implement .write_iter
Orangefs: rename orangefs_kernel_op_s.aio_ref_count to just ref_count.
Orangefs: change ORANGEFS_VERSION from "Unknown" to "upstream"
Orangefs: define a minimum compatible userspace version.
Orangefs: make .statfs gossip_debug more complete.
Orangefs: add protocol information to Documentation/filesystems/orangefs.txt
Orangefs: add verification to decode_dirents
Orangefs: merge with V4.4
Orangefs: make gossip statement more palatable to xtensa
Orangefs: improve gossip statement
Orangefs: clean up slab allocation.
Orangefs: added a couple of WARN_ONs, perhaps just temporarily.
Orangefs: make some gossip statements more helpful.
Orangefs: remove vestigial ASYNC code
Orangefs: clean up orangefs_kernel_op_s comments.
Orangefs: code sanitation
Orangefs: code sanitation.
Orangefs: update orangefs.txt
Orangefs: improve gossip statements
Orangefs: add a new gossip statement
Orangefs: improve the POSIXness of interrupted writes...
Orangefs: merge to v4.5
Orangefs: Extra sanity insurance on buffer before using string functions on it.
Orangefs: follow_link -> get_link change
Orangefs: fix sloppy cleanups of debugfs and sysfs init failures.
Orangefs: adjust unwind on module init failure.
Nicholas Mc Guire (1):
Orangefs: use kzalloc for kmalloc + memset 0
Richard Weinberger (1):
orangefs: Don't pollute global namespace
Sasha Levin (1):
fs: orangefs: remove execute priviliges from module params
Yi Liu (1):
OrangeFS: Change almost all instances of the string PVFS2 to OrangeFS.
Documentation/ABI/stable/sysfs-fs-orangefs | 87 ++
Documentation/filesystems/orangefs.txt | 406 +++++++
MAINTAINERS | 8 +
fs/Kconfig | 1 +
fs/Makefile | 1 +
fs/orangefs/Kconfig | 6 +
fs/orangefs/Makefile | 10 +
fs/orangefs/acl.c | 175 +++
fs/orangefs/dcache.c | 138 +++
fs/orangefs/devorangefs-req.c | 943 +++++++++++++++
fs/orangefs/dir.c | 400 +++++++
fs/orangefs/downcall.h | 133 +++
fs/orangefs/file.c | 717 +++++++++++
fs/orangefs/inode.c | 475 ++++++++
fs/orangefs/namei.c | 462 ++++++++
fs/orangefs/orangefs-bufmap.c | 556 +++++++++
fs/orangefs/orangefs-bufmap.h | 36 +
fs/orangefs/orangefs-cache.c | 161 +++
fs/orangefs/orangefs-debug.h | 92 ++
fs/orangefs/orangefs-debugfs.c | 455 +++++++
fs/orangefs/orangefs-debugfs.h | 3 +
fs/orangefs/orangefs-dev-proto.h | 62 +
fs/orangefs/orangefs-kernel.h | 623 ++++++++++
fs/orangefs/orangefs-mod.c | 293 +++++
fs/orangefs/orangefs-sysfs.c | 1772 ++++++++++++++++++++++++++++
fs/orangefs/orangefs-sysfs.h | 2 +
fs/orangefs/orangefs-utils.c | 1048 ++++++++++++++++
fs/orangefs/protocol.h | 452 +++++++
fs/orangefs/super.c | 559 +++++++++
fs/orangefs/symlink.c | 19 +
fs/orangefs/upcall.h | 246 ++++
fs/orangefs/waitqueue.c | 357 ++++++
fs/orangefs/xattr.c | 545 +++++++++
33 files changed, 11243 insertions(+)
create mode 100644 Documentation/ABI/stable/sysfs-fs-orangefs
create mode 100644 Documentation/filesystems/orangefs.txt
create mode 100644 fs/orangefs/Kconfig
create mode 100644 fs/orangefs/Makefile
create mode 100644 fs/orangefs/acl.c
create mode 100644 fs/orangefs/dcache.c
create mode 100644 fs/orangefs/devorangefs-req.c
create mode 100644 fs/orangefs/dir.c
create mode 100644 fs/orangefs/downcall.h
create mode 100644 fs/orangefs/file.c
create mode 100644 fs/orangefs/inode.c
create mode 100644 fs/orangefs/namei.c
create mode 100644 fs/orangefs/orangefs-bufmap.c
create mode 100644 fs/orangefs/orangefs-bufmap.h
create mode 100644 fs/orangefs/orangefs-cache.c
create mode 100644 fs/orangefs/orangefs-debug.h
create mode 100644 fs/orangefs/orangefs-debugfs.c
create mode 100644 fs/orangefs/orangefs-debugfs.h
create mode 100644 fs/orangefs/orangefs-dev-proto.h
create mode 100644 fs/orangefs/orangefs-kernel.h
create mode 100644 fs/orangefs/orangefs-mod.c
create mode 100644 fs/orangefs/orangefs-sysfs.c
create mode 100644 fs/orangefs/orangefs-sysfs.h
create mode 100644 fs/orangefs/orangefs-utils.c
create mode 100644 fs/orangefs/protocol.h
create mode 100644 fs/orangefs/super.c
create mode 100644 fs/orangefs/symlink.c
create mode 100644 fs/orangefs/upcall.h
create mode 100644 fs/orangefs/waitqueue.c
create mode 100644 fs/orangefs/xattr.c
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-26 18:28 ` Al Viro
@ 2016-03-26 18:37 ` Al Viro
2016-03-26 19:00 ` Mike Marshall
0 siblings, 1 reply; 25+ messages in thread
From: Al Viro @ 2016-03-26 18:37 UTC (permalink / raw)
To: Mike Marshall; +Cc: Linus Torvalds, Martin Brandenburg, linux-fsdevel
On Sat, Mar 26, 2016 at 06:28:29PM +0000, Al Viro wrote:
> Oh, for... The point is, *don't* *trim* *diffstat* *and* *shortlog*. For
> your branch that should've been as below and it belongs in pull request,
> preferably - with [git pull] somewhere in the subject. The lines from
> dashes below to the end of this reply should have been produced by
> git request-pull and should've been a part of your posting.
PS: I've pulled your branch into vfs.git#orangefs; pull request for that
one would look so:
Subject: [git pull] orangefs initial merge
Orangefs client. Note that the regular tree lives at
git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git and subsequent
pull requests will be from there (in fact, this branch is identical to
#for-next in there).
The following changes since commit b562e44f507e863c6792946e4e1b1449fbbac85d:
Linux 4.5 (2016-03-13 21:28:54 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git orangefs
for you to fetch changes up to 45996492e5c85aa0ac93a95d1b2d1ed56851c865:
orangefs: fix orangefs_superblock locking (2016-03-26 07:22:00 -0400)
----------------------------------------------------------------
Al Viro (67):
orangefs: explicitly pass the size to pvfs_bufmap_copy_to_iovec()
pvfs_bufmap_copy_from_iovec(): don't rely upon size being equal to iov_iter_count(iter)
orangefs: make postcopy_buffers() take iov_iter
orangefs: make precopy_buffers() take iov_iter
orangefs: make wait_for_direct_io() take iov_iter
orangefs: don't bother with splitting iovecs
orangefs: make do_readv_writev() take iov_iter
orangefs: make pvfs2_inode_read() take iov_iter
orangefs: kill kmap/kunmap wrappers
orangefs: use get_user_pages_fast(), not get_user_pages()
orangefs: double iput() in case of d_make_root() failure
orangefs: kill struct pvfs2_mount_sb_info_s
pvfs2_fill_sb(): use kzalloc()
orangefs: kill pointless ->link() and ->mknod()
orangefs: sanitize pvfs2_convert_time_field()
orangefs: switch decode_dirents() to use of kcalloc()
orangefs: get rid of dec_string and enc_string
orangefs: don't leave uninitialized data in ->trailer_buf
orangefs: validate the response in decode_dirents()
fs: out of bounds on stack in iov_iter_advance
orangefs: use DEFINE_MUTEX (and mutex_init() had been too late)
orangefs: generic_file_open() is pointless for character devices
orangefs: ->poll() is only called between successful ->open() and ->release()
orangefs: kill ioctl32 rudiments
orangefs: ->poll() doesn't need spinlock
orangefs: get rid of <censored> macros
orangefs: kill orangefs_inode_s ->list
make orangefs_clean_up_interrupted_operation() static
orangefs: make wait_for_...downcall() static
orangefs: move wakeups into set_op_state_{serviced,purged}()
orangefs: make wait_for_...downcall() static
orangefs: move wakeups into set_op_state_{serviced,purged}()
orangefs: nothing should remain in request list and in hash
orangefs: make sure that reopening pvfs2-req won't overlap with the end of close
orangefs: hopefully saner op refcounting and locking
orangefs: remove cargo-culting spin_lock_irqsave() in service_operation()
orangefs: reduce nesting in wait_for_matching_downcall()
orangefs_clean_up_interrupted_operation: call with op->lock held
orangefs: get rid of MSECS_TO_JIFFIES
if ORANGEFS_VFS_OP_FILE_IO request had been given up, don't bother waiting
orangefs: don't reinvent completion.h...
orangefs: move handle_io_error() to file.c
orangefs: clean up op_alloc()
orangefs: avoid freeing a slot twice in wait_for_direct_io()
orangefs: wait_for_direct_io(): restore the position in iter when restarting
orangefs: get rid of handle_io_error()
get rid of bufmap argument of orangefs_bufmap_put()
orangefs: delay freeing slot until cancel completes
orangefs: get rid of loop in wait_for_matching_downcall()
orangefs: sanitize handling of request list
service_operation(): don't block signals, just use ..._killable
orangefs: lift handling of timeouts and attempts count to service_operation()
orangefs_bufmap_..._query(): don't bother with refcounts
orangefs: bufmap rewrite
orangefs_readdir_index_put(): get rid of bufmap argument
orangefs: get rid of op->done
orangefs: set correct ->downcall.status on failing to copy reply from daemon
orangefs: have ..._clean_interrupted_...() wait for copy to/from daemon
orangefs: get rid of op refcounts
orangefs: get rid of readdir_handle_s
orangefs_copy_{to,from}_bufmap(): don't pass bufmap pointer
orangefs: saner calling conventions for getting a slot
orangefs-bufmap.h: trim unused junk
orangefs: sanitize ->llseek()
orangefs: have ->kill_sb() evict the VFS side of things first
orangefs: fix do_readv_writev() handling of error halfway through
orangefs: fix orangefs_superblock locking
Arnd Bergmann (3):
orangefs: fix typo in ornagefs_inode_lock
orangefs: avoid time conversion function
orangefs: remove unused 'diff' function
Guenter Roeck (1):
Orangefs: Swap order of include files
Julia Lawall (1):
OrangeFS: constify export_operations structures
Martin Brandenburg (40):
Orangefs: Use readonly mmap since writepage is not implemented.
Orangefs: Clean up error decoding.
Orangefs: Remove unused #defines from signal blocking code.
Orangefs: Remove upcall trailers which are not used.
Orangefs: Clean up pvfs2_devreq_read.
Orangefs: do not finalize bufmap if it was never initialized.
orangefs: Remove ``aligned'' upcall and downcall length macros.
orangefs: Change visibility of several bufmap helpers to static.
orangefs: Remove useless inline qualifier from bufmap functions.
orangefs: Do not unref if there is no bufmap.
orangefs: Fix some more global namespace pollution.
orangefs: Util functions shouldn't operate on inode where it can be avoided.
orangefs: Fix revalidate.
orangefs: Only compare attributes specified in orangefs_inode_getattr.
orangefs: Implement inode_operations->permission().
orangefs: Do not retrieve size from servers unless it it necessary.
orangefs: use S_ISREG(mode) and friends instead of mode & S_IFREG.
orangefs: free readdir buffer index before the dir_emit loop
orangefs: don't d_drop in d_revalidate since the caller will
orangefs: use ORANGEFS_NAME_LEN everywhere; remove ORANGEFS_NAME_MAX
orangefs: remove vestigial async io code
orangefs: we never lookup with sym_follow set
orangefs: clean up fill_default_sys_attrs
orangefs: Avoid symlink upcall if target is too long.
orangefs: make fs_mount_pending static
orangefs: remove unused reference to xattr key length
orangefs: sanitize listxattr and return EIO on impossible values
orangefs: remove paranoia in orangefs_set_inode
orangefs: put register_chrdev immediately before register_filesystem
orangefs: remove inode->i_lock wrapper
orangefs: rename orangefs_inode_getattr to orangefs_inode_old_getattr
orangefs: use new orangefs_inode_getattr to create new inodes
orangefs: use new orangefs_inode_getattr to get size in write and llseek
orangefs: use new getattr in inode getattr and permission
orangefs: use new getattr for revalidate and remove old getattr
orangefs: refactor inode type or link_target change detection
orangefs: remove wrapper around mutex_lock(&inode->i_mutex)
orangefs: remove needless wrapper around GFP_KERNEL
orangefs: move code which sets i_link to orangefs_inode_getattr
ornagefs: ensure that truncate has an up to date inode size
Mike Marshall (61):
Orangefs: kernel client part 1
Orangefs: kernel client part 2
Orangefs: kernel client part 3
Orangefs: kernel client part 4
Orangefs: kernel client part 5
Orangefs: kernel client part 6
Orangefs: kernel client part 7
Orangefs: kernel client update 1.
Orangefs: sooth most sparse complaints
Orangefs: address problems found by static checker
Orangefs: large integer implicitly truncated to unsigned type
Orangefs: use inode_set_bytes for directories
Orangefs: use iov_iter interface
Orangefs: fix dir_emit code in pvfs2_readdir.
Orangefs: put PVFS_util_min out of its misery.
Orangefs: choose return codes from among the expected ones.
Orangefs: Don't opencode memcpy.
Orangefs: update signal blocking code before Oleg sees it.
Orangefs: don't use mount_nodev, use sget directly.
Orangefs: fix some checkpatch.pl complaints that had creeped in.
Orangefs: set pos after generic_write_checks
Orangefs: fix gossip statement
Orangefs: Merge tag 'v4.4-rc1' into for-next
Orangefs: change pvfs2 filenames to orangefs
Orangefs: don't expose internal details of pathname resolution to userspace.
Orangefs: don't keep checking stuff in on Friday afternoon.
Orangefs: improve comments
Orangef: remove overlooked old-style userspace debug parts
Orangefs: de-uglify orangefs_devreq_writev, and devorangefs-req.c in general
Orangefs: Don't wait the old-fashioned way.
Orangefs: don't use deprecated xattr defines.
Orangefs: validate resp.listxattr.returned_count
Orangefs: don't change EXTRAVERSION
Orangefs: don't trigger copy_attributes_to_inode from d_revalidate.
Orangefs: add orangefs to MAINTAINERS
Orangefs: implement .write_iter
Orangefs: rename orangefs_kernel_op_s.aio_ref_count to just ref_count.
Orangefs: change ORANGEFS_VERSION from "Unknown" to "upstream"
Orangefs: define a minimum compatible userspace version.
Orangefs: make .statfs gossip_debug more complete.
Orangefs: add protocol information to Documentation/filesystems/orangefs.txt
Orangefs: add verification to decode_dirents
Orangefs: merge with V4.4
Orangefs: make gossip statement more palatable to xtensa
Orangefs: improve gossip statement
Orangefs: clean up slab allocation.
Orangefs: added a couple of WARN_ONs, perhaps just temporarily.
Orangefs: make some gossip statements more helpful.
Orangefs: remove vestigial ASYNC code
Orangefs: clean up orangefs_kernel_op_s comments.
Orangefs: code sanitation
Orangefs: code sanitation.
Orangefs: update orangefs.txt
Orangefs: improve gossip statements
Orangefs: add a new gossip statement
Orangefs: improve the POSIXness of interrupted writes...
Orangefs: merge to v4.5
Orangefs: Extra sanity insurance on buffer before using string functions on it.
Orangefs: follow_link -> get_link change
Orangefs: fix sloppy cleanups of debugfs and sysfs init failures.
Orangefs: adjust unwind on module init failure.
Nicholas Mc Guire (1):
Orangefs: use kzalloc for kmalloc + memset 0
Richard Weinberger (1):
orangefs: Don't pollute global namespace
Sasha Levin (1):
fs: orangefs: remove execute priviliges from module params
Yi Liu (1):
OrangeFS: Change almost all instances of the string PVFS2 to OrangeFS.
Documentation/ABI/stable/sysfs-fs-orangefs | 87 ++
Documentation/filesystems/orangefs.txt | 406 +++++++
MAINTAINERS | 8 +
fs/Kconfig | 1 +
fs/Makefile | 1 +
fs/orangefs/Kconfig | 6 +
fs/orangefs/Makefile | 10 +
fs/orangefs/acl.c | 175 +++
fs/orangefs/dcache.c | 138 +++
fs/orangefs/devorangefs-req.c | 943 +++++++++++++++
fs/orangefs/dir.c | 400 +++++++
fs/orangefs/downcall.h | 133 +++
fs/orangefs/file.c | 717 +++++++++++
fs/orangefs/inode.c | 475 ++++++++
fs/orangefs/namei.c | 462 ++++++++
fs/orangefs/orangefs-bufmap.c | 556 +++++++++
fs/orangefs/orangefs-bufmap.h | 36 +
fs/orangefs/orangefs-cache.c | 161 +++
fs/orangefs/orangefs-debug.h | 92 ++
fs/orangefs/orangefs-debugfs.c | 455 +++++++
fs/orangefs/orangefs-debugfs.h | 3 +
fs/orangefs/orangefs-dev-proto.h | 62 +
fs/orangefs/orangefs-kernel.h | 623 ++++++++++
fs/orangefs/orangefs-mod.c | 293 +++++
fs/orangefs/orangefs-sysfs.c | 1772 ++++++++++++++++++++++++++++
fs/orangefs/orangefs-sysfs.h | 2 +
fs/orangefs/orangefs-utils.c | 1048 ++++++++++++++++
fs/orangefs/protocol.h | 452 +++++++
fs/orangefs/super.c | 559 +++++++++
fs/orangefs/symlink.c | 19 +
fs/orangefs/upcall.h | 246 ++++
fs/orangefs/waitqueue.c | 357 ++++++
fs/orangefs/xattr.c | 545 +++++++++
33 files changed, 11243 insertions(+)
create mode 100644 Documentation/ABI/stable/sysfs-fs-orangefs
create mode 100644 Documentation/filesystems/orangefs.txt
create mode 100644 fs/orangefs/Kconfig
create mode 100644 fs/orangefs/Makefile
create mode 100644 fs/orangefs/acl.c
create mode 100644 fs/orangefs/dcache.c
create mode 100644 fs/orangefs/devorangefs-req.c
create mode 100644 fs/orangefs/dir.c
create mode 100644 fs/orangefs/downcall.h
create mode 100644 fs/orangefs/file.c
create mode 100644 fs/orangefs/inode.c
create mode 100644 fs/orangefs/namei.c
create mode 100644 fs/orangefs/orangefs-bufmap.c
create mode 100644 fs/orangefs/orangefs-bufmap.h
create mode 100644 fs/orangefs/orangefs-cache.c
create mode 100644 fs/orangefs/orangefs-debug.h
create mode 100644 fs/orangefs/orangefs-debugfs.c
create mode 100644 fs/orangefs/orangefs-debugfs.h
create mode 100644 fs/orangefs/orangefs-dev-proto.h
create mode 100644 fs/orangefs/orangefs-kernel.h
create mode 100644 fs/orangefs/orangefs-mod.c
create mode 100644 fs/orangefs/orangefs-sysfs.c
create mode 100644 fs/orangefs/orangefs-sysfs.h
create mode 100644 fs/orangefs/orangefs-utils.c
create mode 100644 fs/orangefs/protocol.h
create mode 100644 fs/orangefs/super.c
create mode 100644 fs/orangefs/symlink.c
create mode 100644 fs/orangefs/upcall.h
create mode 100644 fs/orangefs/waitqueue.c
create mode 100644 fs/orangefs/xattr.c
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-26 18:37 ` Al Viro
@ 2016-03-26 19:00 ` Mike Marshall
2016-03-26 19:51 ` Linus Torvalds
0 siblings, 1 reply; 25+ messages in thread
From: Mike Marshall @ 2016-03-26 19:00 UTC (permalink / raw)
To: Al Viro; +Cc: Linus Torvalds, Martin Brandenburg, linux-fsdevel, Mike Marshall
I think I've got it, Martin helped...
I made the tag right on top of the last thing in our branch that we
got from Linus: b562e44f5
pushed out the tag, and...
$ git request-pull ofs-pull-tag-2
git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
I'll send out a message to Al, CC to Linus and fs-devel with
"[git pull] orangefs initial merge" as the subject,
and the body will be the below text generated by "git request-pull"
-Mike
The following changes since commit b562e44f507e863c6792946e4e1b1449fbbac85d:
Linux 4.5 (2016-03-13 21:28:54 -0700)
are available in the git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
tags/ofs-pull-tag-1
for you to fetch changes up to 45996492e5c85aa0ac93a95d1b2d1ed56851c865:
orangefs: fix orangefs_superblock locking (2016-03-26 07:22:00 -0400)
----------------------------------------------------------------
Orangefs: pull-tag-1
----------------------------------------------------------------
Al Viro (67):
orangefs: explicitly pass the size to pvfs_bufmap_copy_to_iovec()
pvfs_bufmap_copy_from_iovec(): don't rely upon size being equal
to iov_iter_count(iter)
orangefs: make postcopy_buffers() take iov_iter
orangefs: make precopy_buffers() take iov_iter
orangefs: make wait_for_direct_io() take iov_iter
orangefs: don't bother with splitting iovecs
orangefs: make do_readv_writev() take iov_iter
orangefs: make pvfs2_inode_read() take iov_iter
orangefs: kill kmap/kunmap wrappers
orangefs: use get_user_pages_fast(), not get_user_pages()
orangefs: double iput() in case of d_make_root() failure
orangefs: kill struct pvfs2_mount_sb_info_s
pvfs2_fill_sb(): use kzalloc()
orangefs: kill pointless ->link() and ->mknod()
orangefs: sanitize pvfs2_convert_time_field()
orangefs: switch decode_dirents() to use of kcalloc()
orangefs: get rid of dec_string and enc_string
orangefs: don't leave uninitialized data in ->trailer_buf
orangefs: validate the response in decode_dirents()
fs: out of bounds on stack in iov_iter_advance
orangefs: use DEFINE_MUTEX (and mutex_init() had been too late)
orangefs: generic_file_open() is pointless for character devices
orangefs: ->poll() is only called between successful ->open()
and ->release()
orangefs: kill ioctl32 rudiments
orangefs: ->poll() doesn't need spinlock
orangefs: get rid of <censored> macros
orangefs: kill orangefs_inode_s ->list
make orangefs_clean_up_interrupted_operation() static
orangefs: make wait_for_...downcall() static
orangefs: move wakeups into set_op_state_{serviced,purged}()
orangefs: make wait_for_...downcall() static
orangefs: move wakeups into set_op_state_{serviced,purged}()
orangefs: nothing should remain in request list and in hash
orangefs: make sure that reopening pvfs2-req won't overlap with
the end of close
orangefs: hopefully saner op refcounting and locking
orangefs: remove cargo-culting spin_lock_irqsave() in service_operation()
orangefs: reduce nesting in wait_for_matching_downcall()
orangefs_clean_up_interrupted_operation: call with op->lock held
orangefs: get rid of MSECS_TO_JIFFIES
if ORANGEFS_VFS_OP_FILE_IO request had been given up, don't bother waiting
orangefs: don't reinvent completion.h...
orangefs: move handle_io_error() to file.c
orangefs: clean up op_alloc()
orangefs: avoid freeing a slot twice in wait_for_direct_io()
orangefs: wait_for_direct_io(): restore the position in iter
when restarting
orangefs: get rid of handle_io_error()
get rid of bufmap argument of orangefs_bufmap_put()
orangefs: delay freeing slot until cancel completes
orangefs: get rid of loop in wait_for_matching_downcall()
orangefs: sanitize handling of request list
service_operation(): don't block signals, just use ..._killable
orangefs: lift handling of timeouts and attempts count to
service_operation()
orangefs_bufmap_..._query(): don't bother with refcounts
orangefs: bufmap rewrite
orangefs_readdir_index_put(): get rid of bufmap argument
orangefs: get rid of op->done
orangefs: set correct ->downcall.status on failing to copy reply
from daemon
orangefs: have ..._clean_interrupted_...() wait for copy to/from daemon
orangefs: get rid of op refcounts
orangefs: get rid of readdir_handle_s
orangefs_copy_{to,from}_bufmap(): don't pass bufmap pointer
orangefs: saner calling conventions for getting a slot
orangefs-bufmap.h: trim unused junk
orangefs: sanitize ->llseek()
orangefs: have ->kill_sb() evict the VFS side of things first
orangefs: fix do_readv_writev() handling of error halfway through
orangefs: fix orangefs_superblock locking
Arnd Bergmann (3):
orangefs: fix typo in ornagefs_inode_lock
orangefs: avoid time conversion function
orangefs: remove unused 'diff' function
Guenter Roeck (1):
Orangefs: Swap order of include files
Julia Lawall (1):
OrangeFS: constify export_operations structures
Martin Brandenburg (40):
Orangefs: Use readonly mmap since writepage is not implemented.
Orangefs: Clean up error decoding.
Orangefs: Remove unused #defines from signal blocking code.
Orangefs: Remove upcall trailers which are not used.
Orangefs: Clean up pvfs2_devreq_read.
Orangefs: do not finalize bufmap if it was never initialized.
orangefs: Remove ``aligned'' upcall and downcall length macros.
orangefs: Change visibility of several bufmap helpers to static.
orangefs: Remove useless inline qualifier from bufmap functions.
orangefs: Do not unref if there is no bufmap.
orangefs: Fix some more global namespace pollution.
orangefs: Util functions shouldn't operate on inode where it can
be avoided.
orangefs: Fix revalidate.
orangefs: Only compare attributes specified in orangefs_inode_getattr.
orangefs: Implement inode_operations->permission().
orangefs: Do not retrieve size from servers unless it it necessary.
orangefs: use S_ISREG(mode) and friends instead of mode & S_IFREG.
orangefs: free readdir buffer index before the dir_emit loop
orangefs: don't d_drop in d_revalidate since the caller will
orangefs: use ORANGEFS_NAME_LEN everywhere; remove ORANGEFS_NAME_MAX
orangefs: remove vestigial async io code
orangefs: we never lookup with sym_follow set
orangefs: clean up fill_default_sys_attrs
orangefs: Avoid symlink upcall if target is too long.
orangefs: make fs_mount_pending static
orangefs: remove unused reference to xattr key length
orangefs: sanitize listxattr and return EIO on impossible values
orangefs: remove paranoia in orangefs_set_inode
orangefs: put register_chrdev immediately before register_filesystem
orangefs: remove inode->i_lock wrapper
orangefs: rename orangefs_inode_getattr to orangefs_inode_old_getattr
orangefs: use new orangefs_inode_getattr to create new inodes
orangefs: use new orangefs_inode_getattr to get size in write and llseek
orangefs: use new getattr in inode getattr and permission
orangefs: use new getattr for revalidate and remove old getattr
orangefs: refactor inode type or link_target change detection
orangefs: remove wrapper around mutex_lock(&inode->i_mutex)
orangefs: remove needless wrapper around GFP_KERNEL
orangefs: move code which sets i_link to orangefs_inode_getattr
ornagefs: ensure that truncate has an up to date inode size
Mike Marshall (61):
Orangefs: kernel client part 1
Orangefs: kernel client part 2
Orangefs: kernel client part 3
Orangefs: kernel client part 4
Orangefs: kernel client part 5
Orangefs: kernel client part 6
Orangefs: kernel client part 7
Orangefs: kernel client update 1.
Orangefs: sooth most sparse complaints
Orangefs: address problems found by static checker
Orangefs: large integer implicitly truncated to unsigned type
Orangefs: use inode_set_bytes for directories
Orangefs: use iov_iter interface
Orangefs: fix dir_emit code in pvfs2_readdir.
Orangefs: put PVFS_util_min out of its misery.
Orangefs: choose return codes from among the expected ones.
Orangefs: Don't opencode memcpy.
Orangefs: update signal blocking code before Oleg sees it.
Orangefs: don't use mount_nodev, use sget directly.
Orangefs: fix some checkpatch.pl complaints that had creeped in.
Orangefs: set pos after generic_write_checks
Orangefs: fix gossip statement
Orangefs: Merge tag 'v4.4-rc1' into for-next
Orangefs: change pvfs2 filenames to orangefs
Orangefs: don't expose internal details of pathname resolution
to userspace.
Orangefs: don't keep checking stuff in on Friday afternoon.
Orangefs: improve comments
Orangef: remove overlooked old-style userspace debug parts
Orangefs: de-uglify orangefs_devreq_writev, and
devorangefs-req.c in general
Orangefs: Don't wait the old-fashioned way.
Orangefs: don't use deprecated xattr defines.
Orangefs: validate resp.listxattr.returned_count
Orangefs: don't change EXTRAVERSION
Orangefs: don't trigger copy_attributes_to_inode from d_revalidate.
Orangefs: add orangefs to MAINTAINERS
Orangefs: implement .write_iter
Orangefs: rename orangefs_kernel_op_s.aio_ref_count to just ref_count.
Orangefs: change ORANGEFS_VERSION from "Unknown" to "upstream"
Orangefs: define a minimum compatible userspace version.
Orangefs: make .statfs gossip_debug more complete.
Orangefs: add protocol information to
Documentation/filesystems/orangefs.txt
Orangefs: add verification to decode_dirents
Orangefs: merge with V4.4
Orangefs: make gossip statement more palatable to xtensa
Orangefs: improve gossip statement
Orangefs: clean up slab allocation.
Orangefs: added a couple of WARN_ONs, perhaps just temporarily.
Orangefs: make some gossip statements more helpful.
Orangefs: remove vestigial ASYNC code
Orangefs: clean up orangefs_kernel_op_s comments.
Orangefs: code sanitation
Orangefs: code sanitation.
Orangefs: update orangefs.txt
Orangefs: improve gossip statements
Orangefs: add a new gossip statement
Orangefs: improve the POSIXness of interrupted writes...
Orangefs: merge to v4.5
Orangefs: Extra sanity insurance on buffer before using string
functions on it.
Orangefs: follow_link -> get_link change
Orangefs: fix sloppy cleanups of debugfs and sysfs init failures.
Orangefs: adjust unwind on module init failure.
Nicholas Mc Guire (1):
Orangefs: use kzalloc for kmalloc + memset 0
Richard Weinberger (1):
orangefs: Don't pollute global namespace
Sasha Levin (1):
fs: orangefs: remove execute priviliges from module params
Yi Liu (1):
OrangeFS: Change almost all instances of the string PVFS2 to OrangeFS.
Documentation/ABI/stable/sysfs-fs-orangefs | 87 ++
Documentation/filesystems/orangefs.txt | 406 +++++++
MAINTAINERS | 8 +
fs/Kconfig | 1 +
fs/Makefile | 1 +
fs/orangefs/Kconfig | 6 +
fs/orangefs/Makefile | 10 +
fs/orangefs/acl.c | 175 +++
fs/orangefs/dcache.c | 138 +++
fs/orangefs/devorangefs-req.c | 943 +++++++++++++++
fs/orangefs/dir.c | 400 +++++++
fs/orangefs/downcall.h | 133 +++
fs/orangefs/file.c | 717 +++++++++++
fs/orangefs/inode.c | 475 ++++++++
fs/orangefs/namei.c | 462 ++++++++
fs/orangefs/orangefs-bufmap.c | 556 +++++++++
fs/orangefs/orangefs-bufmap.h | 36 +
fs/orangefs/orangefs-cache.c | 161 +++
fs/orangefs/orangefs-debug.h | 92 ++
fs/orangefs/orangefs-debugfs.c | 455 +++++++
fs/orangefs/orangefs-debugfs.h | 3 +
fs/orangefs/orangefs-dev-proto.h | 62 +
fs/orangefs/orangefs-kernel.h | 623 ++++++++++
fs/orangefs/orangefs-mod.c | 293 +++++
fs/orangefs/orangefs-sysfs.c | 1772 ++++++++++++++++++++++++++++
fs/orangefs/orangefs-sysfs.h | 2 +
fs/orangefs/orangefs-utils.c | 1048 ++++++++++++++++
fs/orangefs/protocol.h | 452 +++++++
fs/orangefs/super.c | 559 +++++++++
fs/orangefs/symlink.c | 19 +
fs/orangefs/upcall.h | 246 ++++
fs/orangefs/waitqueue.c | 357 ++++++
fs/orangefs/xattr.c | 545 +++++++++
33 files changed, 11243 insertions(+)
create mode 100644 Documentation/ABI/stable/sysfs-fs-orangefs
create mode 100644 Documentation/filesystems/orangefs.txt
create mode 100644 fs/orangefs/Kconfig
create mode 100644 fs/orangefs/Makefile
create mode 100644 fs/orangefs/acl.c
create mode 100644 fs/orangefs/dcache.c
create mode 100644 fs/orangefs/devorangefs-req.c
create mode 100644 fs/orangefs/dir.c
create mode 100644 fs/orangefs/downcall.h
create mode 100644 fs/orangefs/file.c
create mode 100644 fs/orangefs/inode.c
create mode 100644 fs/orangefs/namei.c
create mode 100644 fs/orangefs/orangefs-bufmap.c
create mode 100644 fs/orangefs/orangefs-bufmap.h
create mode 100644 fs/orangefs/orangefs-cache.c
create mode 100644 fs/orangefs/orangefs-debug.h
create mode 100644 fs/orangefs/orangefs-debugfs.c
create mode 100644 fs/orangefs/orangefs-debugfs.h
create mode 100644 fs/orangefs/orangefs-dev-proto.h
create mode 100644 fs/orangefs/orangefs-kernel.h
create mode 100644 fs/orangefs/orangefs-mod.c
create mode 100644 fs/orangefs/orangefs-sysfs.c
create mode 100644 fs/orangefs/orangefs-sysfs.h
create mode 100644 fs/orangefs/orangefs-utils.c
create mode 100644 fs/orangefs/protocol.h
create mode 100644 fs/orangefs/super.c
create mode 100644 fs/orangefs/symlink.c
create mode 100644 fs/orangefs/upcall.h
create mode 100644 fs/orangefs/waitqueue.c
create mode 100644 fs/orangefs/xattr.c
On Sat, Mar 26, 2016 at 2:37 PM, Al Viro <viro@zeniv.linux.org.uk> wrote:
> On Sat, Mar 26, 2016 at 06:28:29PM +0000, Al Viro wrote:
>
>> Oh, for... The point is, *don't* *trim* *diffstat* *and* *shortlog*. For
>> your branch that should've been as below and it belongs in pull request,
>> preferably - with [git pull] somewhere in the subject. The lines from
>> dashes below to the end of this reply should have been produced by
>> git request-pull and should've been a part of your posting.
>
> PS: I've pulled your branch into vfs.git#orangefs; pull request for that
> one would look so:
>
> Subject: [git pull] orangefs initial merge
>
> Orangefs client. Note that the regular tree lives at
> git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git and subsequent
> pull requests will be from there (in fact, this branch is identical to
> #for-next in there).
>
> The following changes since commit b562e44f507e863c6792946e4e1b1449fbbac85d:
>
> Linux 4.5 (2016-03-13 21:28:54 -0700)
>
> are available in the git repository at:
>
> git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs.git orangefs
>
> for you to fetch changes up to 45996492e5c85aa0ac93a95d1b2d1ed56851c865:
>
> orangefs: fix orangefs_superblock locking (2016-03-26 07:22:00 -0400)
>
> ----------------------------------------------------------------
> Al Viro (67):
> orangefs: explicitly pass the size to pvfs_bufmap_copy_to_iovec()
> pvfs_bufmap_copy_from_iovec(): don't rely upon size being equal to iov_iter_count(iter)
> orangefs: make postcopy_buffers() take iov_iter
> orangefs: make precopy_buffers() take iov_iter
> orangefs: make wait_for_direct_io() take iov_iter
> orangefs: don't bother with splitting iovecs
> orangefs: make do_readv_writev() take iov_iter
> orangefs: make pvfs2_inode_read() take iov_iter
> orangefs: kill kmap/kunmap wrappers
> orangefs: use get_user_pages_fast(), not get_user_pages()
> orangefs: double iput() in case of d_make_root() failure
> orangefs: kill struct pvfs2_mount_sb_info_s
> pvfs2_fill_sb(): use kzalloc()
> orangefs: kill pointless ->link() and ->mknod()
> orangefs: sanitize pvfs2_convert_time_field()
> orangefs: switch decode_dirents() to use of kcalloc()
> orangefs: get rid of dec_string and enc_string
> orangefs: don't leave uninitialized data in ->trailer_buf
> orangefs: validate the response in decode_dirents()
> fs: out of bounds on stack in iov_iter_advance
> orangefs: use DEFINE_MUTEX (and mutex_init() had been too late)
> orangefs: generic_file_open() is pointless for character devices
> orangefs: ->poll() is only called between successful ->open() and ->release()
> orangefs: kill ioctl32 rudiments
> orangefs: ->poll() doesn't need spinlock
> orangefs: get rid of <censored> macros
> orangefs: kill orangefs_inode_s ->list
> make orangefs_clean_up_interrupted_operation() static
> orangefs: make wait_for_...downcall() static
> orangefs: move wakeups into set_op_state_{serviced,purged}()
> orangefs: make wait_for_...downcall() static
> orangefs: move wakeups into set_op_state_{serviced,purged}()
> orangefs: nothing should remain in request list and in hash
> orangefs: make sure that reopening pvfs2-req won't overlap with the end of close
> orangefs: hopefully saner op refcounting and locking
> orangefs: remove cargo-culting spin_lock_irqsave() in service_operation()
> orangefs: reduce nesting in wait_for_matching_downcall()
> orangefs_clean_up_interrupted_operation: call with op->lock held
> orangefs: get rid of MSECS_TO_JIFFIES
> if ORANGEFS_VFS_OP_FILE_IO request had been given up, don't bother waiting
> orangefs: don't reinvent completion.h...
> orangefs: move handle_io_error() to file.c
> orangefs: clean up op_alloc()
> orangefs: avoid freeing a slot twice in wait_for_direct_io()
> orangefs: wait_for_direct_io(): restore the position in iter when restarting
> orangefs: get rid of handle_io_error()
> get rid of bufmap argument of orangefs_bufmap_put()
> orangefs: delay freeing slot until cancel completes
> orangefs: get rid of loop in wait_for_matching_downcall()
> orangefs: sanitize handling of request list
> service_operation(): don't block signals, just use ..._killable
> orangefs: lift handling of timeouts and attempts count to service_operation()
> orangefs_bufmap_..._query(): don't bother with refcounts
> orangefs: bufmap rewrite
> orangefs_readdir_index_put(): get rid of bufmap argument
> orangefs: get rid of op->done
> orangefs: set correct ->downcall.status on failing to copy reply from daemon
> orangefs: have ..._clean_interrupted_...() wait for copy to/from daemon
> orangefs: get rid of op refcounts
> orangefs: get rid of readdir_handle_s
> orangefs_copy_{to,from}_bufmap(): don't pass bufmap pointer
> orangefs: saner calling conventions for getting a slot
> orangefs-bufmap.h: trim unused junk
> orangefs: sanitize ->llseek()
> orangefs: have ->kill_sb() evict the VFS side of things first
> orangefs: fix do_readv_writev() handling of error halfway through
> orangefs: fix orangefs_superblock locking
>
> Arnd Bergmann (3):
> orangefs: fix typo in ornagefs_inode_lock
> orangefs: avoid time conversion function
> orangefs: remove unused 'diff' function
>
> Guenter Roeck (1):
> Orangefs: Swap order of include files
>
> Julia Lawall (1):
> OrangeFS: constify export_operations structures
>
> Martin Brandenburg (40):
> Orangefs: Use readonly mmap since writepage is not implemented.
> Orangefs: Clean up error decoding.
> Orangefs: Remove unused #defines from signal blocking code.
> Orangefs: Remove upcall trailers which are not used.
> Orangefs: Clean up pvfs2_devreq_read.
> Orangefs: do not finalize bufmap if it was never initialized.
> orangefs: Remove ``aligned'' upcall and downcall length macros.
> orangefs: Change visibility of several bufmap helpers to static.
> orangefs: Remove useless inline qualifier from bufmap functions.
> orangefs: Do not unref if there is no bufmap.
> orangefs: Fix some more global namespace pollution.
> orangefs: Util functions shouldn't operate on inode where it can be avoided.
> orangefs: Fix revalidate.
> orangefs: Only compare attributes specified in orangefs_inode_getattr.
> orangefs: Implement inode_operations->permission().
> orangefs: Do not retrieve size from servers unless it it necessary.
> orangefs: use S_ISREG(mode) and friends instead of mode & S_IFREG.
> orangefs: free readdir buffer index before the dir_emit loop
> orangefs: don't d_drop in d_revalidate since the caller will
> orangefs: use ORANGEFS_NAME_LEN everywhere; remove ORANGEFS_NAME_MAX
> orangefs: remove vestigial async io code
> orangefs: we never lookup with sym_follow set
> orangefs: clean up fill_default_sys_attrs
> orangefs: Avoid symlink upcall if target is too long.
> orangefs: make fs_mount_pending static
> orangefs: remove unused reference to xattr key length
> orangefs: sanitize listxattr and return EIO on impossible values
> orangefs: remove paranoia in orangefs_set_inode
> orangefs: put register_chrdev immediately before register_filesystem
> orangefs: remove inode->i_lock wrapper
> orangefs: rename orangefs_inode_getattr to orangefs_inode_old_getattr
> orangefs: use new orangefs_inode_getattr to create new inodes
> orangefs: use new orangefs_inode_getattr to get size in write and llseek
> orangefs: use new getattr in inode getattr and permission
> orangefs: use new getattr for revalidate and remove old getattr
> orangefs: refactor inode type or link_target change detection
> orangefs: remove wrapper around mutex_lock(&inode->i_mutex)
> orangefs: remove needless wrapper around GFP_KERNEL
> orangefs: move code which sets i_link to orangefs_inode_getattr
> ornagefs: ensure that truncate has an up to date inode size
>
> Mike Marshall (61):
> Orangefs: kernel client part 1
> Orangefs: kernel client part 2
> Orangefs: kernel client part 3
> Orangefs: kernel client part 4
> Orangefs: kernel client part 5
> Orangefs: kernel client part 6
> Orangefs: kernel client part 7
> Orangefs: kernel client update 1.
> Orangefs: sooth most sparse complaints
> Orangefs: address problems found by static checker
> Orangefs: large integer implicitly truncated to unsigned type
> Orangefs: use inode_set_bytes for directories
> Orangefs: use iov_iter interface
> Orangefs: fix dir_emit code in pvfs2_readdir.
> Orangefs: put PVFS_util_min out of its misery.
> Orangefs: choose return codes from among the expected ones.
> Orangefs: Don't opencode memcpy.
> Orangefs: update signal blocking code before Oleg sees it.
> Orangefs: don't use mount_nodev, use sget directly.
> Orangefs: fix some checkpatch.pl complaints that had creeped in.
> Orangefs: set pos after generic_write_checks
> Orangefs: fix gossip statement
> Orangefs: Merge tag 'v4.4-rc1' into for-next
> Orangefs: change pvfs2 filenames to orangefs
> Orangefs: don't expose internal details of pathname resolution to userspace.
> Orangefs: don't keep checking stuff in on Friday afternoon.
> Orangefs: improve comments
> Orangef: remove overlooked old-style userspace debug parts
> Orangefs: de-uglify orangefs_devreq_writev, and devorangefs-req.c in general
> Orangefs: Don't wait the old-fashioned way.
> Orangefs: don't use deprecated xattr defines.
> Orangefs: validate resp.listxattr.returned_count
> Orangefs: don't change EXTRAVERSION
> Orangefs: don't trigger copy_attributes_to_inode from d_revalidate.
> Orangefs: add orangefs to MAINTAINERS
> Orangefs: implement .write_iter
> Orangefs: rename orangefs_kernel_op_s.aio_ref_count to just ref_count.
> Orangefs: change ORANGEFS_VERSION from "Unknown" to "upstream"
> Orangefs: define a minimum compatible userspace version.
> Orangefs: make .statfs gossip_debug more complete.
> Orangefs: add protocol information to Documentation/filesystems/orangefs.txt
> Orangefs: add verification to decode_dirents
> Orangefs: merge with V4.4
> Orangefs: make gossip statement more palatable to xtensa
> Orangefs: improve gossip statement
> Orangefs: clean up slab allocation.
> Orangefs: added a couple of WARN_ONs, perhaps just temporarily.
> Orangefs: make some gossip statements more helpful.
> Orangefs: remove vestigial ASYNC code
> Orangefs: clean up orangefs_kernel_op_s comments.
> Orangefs: code sanitation
> Orangefs: code sanitation.
> Orangefs: update orangefs.txt
> Orangefs: improve gossip statements
> Orangefs: add a new gossip statement
> Orangefs: improve the POSIXness of interrupted writes...
> Orangefs: merge to v4.5
> Orangefs: Extra sanity insurance on buffer before using string functions on it.
> Orangefs: follow_link -> get_link change
> Orangefs: fix sloppy cleanups of debugfs and sysfs init failures.
> Orangefs: adjust unwind on module init failure.
>
> Nicholas Mc Guire (1):
> Orangefs: use kzalloc for kmalloc + memset 0
>
> Richard Weinberger (1):
> orangefs: Don't pollute global namespace
>
> Sasha Levin (1):
> fs: orangefs: remove execute priviliges from module params
>
> Yi Liu (1):
> OrangeFS: Change almost all instances of the string PVFS2 to OrangeFS.
>
> Documentation/ABI/stable/sysfs-fs-orangefs | 87 ++
> Documentation/filesystems/orangefs.txt | 406 +++++++
> MAINTAINERS | 8 +
> fs/Kconfig | 1 +
> fs/Makefile | 1 +
> fs/orangefs/Kconfig | 6 +
> fs/orangefs/Makefile | 10 +
> fs/orangefs/acl.c | 175 +++
> fs/orangefs/dcache.c | 138 +++
> fs/orangefs/devorangefs-req.c | 943 +++++++++++++++
> fs/orangefs/dir.c | 400 +++++++
> fs/orangefs/downcall.h | 133 +++
> fs/orangefs/file.c | 717 +++++++++++
> fs/orangefs/inode.c | 475 ++++++++
> fs/orangefs/namei.c | 462 ++++++++
> fs/orangefs/orangefs-bufmap.c | 556 +++++++++
> fs/orangefs/orangefs-bufmap.h | 36 +
> fs/orangefs/orangefs-cache.c | 161 +++
> fs/orangefs/orangefs-debug.h | 92 ++
> fs/orangefs/orangefs-debugfs.c | 455 +++++++
> fs/orangefs/orangefs-debugfs.h | 3 +
> fs/orangefs/orangefs-dev-proto.h | 62 +
> fs/orangefs/orangefs-kernel.h | 623 ++++++++++
> fs/orangefs/orangefs-mod.c | 293 +++++
> fs/orangefs/orangefs-sysfs.c | 1772 ++++++++++++++++++++++++++++
> fs/orangefs/orangefs-sysfs.h | 2 +
> fs/orangefs/orangefs-utils.c | 1048 ++++++++++++++++
> fs/orangefs/protocol.h | 452 +++++++
> fs/orangefs/super.c | 559 +++++++++
> fs/orangefs/symlink.c | 19 +
> fs/orangefs/upcall.h | 246 ++++
> fs/orangefs/waitqueue.c | 357 ++++++
> fs/orangefs/xattr.c | 545 +++++++++
> 33 files changed, 11243 insertions(+)
> create mode 100644 Documentation/ABI/stable/sysfs-fs-orangefs
> create mode 100644 Documentation/filesystems/orangefs.txt
> create mode 100644 fs/orangefs/Kconfig
> create mode 100644 fs/orangefs/Makefile
> create mode 100644 fs/orangefs/acl.c
> create mode 100644 fs/orangefs/dcache.c
> create mode 100644 fs/orangefs/devorangefs-req.c
> create mode 100644 fs/orangefs/dir.c
> create mode 100644 fs/orangefs/downcall.h
> create mode 100644 fs/orangefs/file.c
> create mode 100644 fs/orangefs/inode.c
> create mode 100644 fs/orangefs/namei.c
> create mode 100644 fs/orangefs/orangefs-bufmap.c
> create mode 100644 fs/orangefs/orangefs-bufmap.h
> create mode 100644 fs/orangefs/orangefs-cache.c
> create mode 100644 fs/orangefs/orangefs-debug.h
> create mode 100644 fs/orangefs/orangefs-debugfs.c
> create mode 100644 fs/orangefs/orangefs-debugfs.h
> create mode 100644 fs/orangefs/orangefs-dev-proto.h
> create mode 100644 fs/orangefs/orangefs-kernel.h
> create mode 100644 fs/orangefs/orangefs-mod.c
> create mode 100644 fs/orangefs/orangefs-sysfs.c
> create mode 100644 fs/orangefs/orangefs-sysfs.h
> create mode 100644 fs/orangefs/orangefs-utils.c
> create mode 100644 fs/orangefs/protocol.h
> create mode 100644 fs/orangefs/super.c
> create mode 100644 fs/orangefs/symlink.c
> create mode 100644 fs/orangefs/upcall.h
> create mode 100644 fs/orangefs/waitqueue.c
> create mode 100644 fs/orangefs/xattr.c
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-26 19:00 ` Mike Marshall
@ 2016-03-26 19:51 ` Linus Torvalds
2016-03-26 20:47 ` Mike Marshall
0 siblings, 1 reply; 25+ messages in thread
From: Linus Torvalds @ 2016-03-26 19:51 UTC (permalink / raw)
To: Mike Marshall; +Cc: Al Viro, Martin Brandenburg, linux-fsdevel
On Sat, Mar 26, 2016 at 12:00 PM, Mike Marshall <hubcap@omnibond.com> wrote:
>
> I made the tag right on top of the last thing in our branch that we
> got from Linus: b562e44f5
So you really don't need to make *that* a tag.
The only tag you want to have is the tag that describes your own
top-of-tree if you want to send me a signed tag (which really is the
preferred mode).
Then, all you do is:
- have some pointer to my tree - it's often just "origin", but you
can also literally just fetch my tree into a separate branch
(note the *fetch* - not a pull. So you can do something like
- give that origin pointer as the start
So something like
git remote add linus
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
would add the remote "linus" (unless you already have a remote
"origin" that points to that upstream repository), and then you can
just do
git fetch linus
and that will get whatever state I have at the time into your
"linus/master" branch. Note that the "git remote add" you only need to
do once (and again, a "git clone" will automatically add an "origin"
remote, so you may have one already).
Then, the best practices is to make a signed tag of *your* work - you
could call it something like "for-linus-4.6", for example:
git tag -s for-linus-4.6
and write a tag message and sign it with your key. I prefer that
signed tag to contain some useful description of what I'm actually
pulling, not just "Orangefs: pull-tag-1". And I do really want it to
be a *signed* tag for it to actually make sense.
After that, just do
git request-pull remotes/linus/master \
git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
tags/for-linus-4.6
which should do the right thing.
That said, the request-pull you sent out looks mostly fine - it's just
that you did an unnecessary tag there to create the base commit that
you really shouldn't have needed to do, and the tag you asked me to
pull was an unsigned one and didn't contain any useful information.
So I pulled it, but for next time:
- please use a signed tag. I don't actually require it for kernel.org
pulls, but it's nice, and it's particularly nice if the signed tag
contents then describe what I'm pulling
- don't do the extraneous tag that doesn't actually help or matter.
but it's in my tree now and I'll push it out after
Linus
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-26 19:51 ` Linus Torvalds
@ 2016-03-26 20:47 ` Mike Marshall
2016-03-26 21:00 ` Linus Torvalds
0 siblings, 1 reply; 25+ messages in thread
From: Mike Marshall @ 2016-03-26 20:47 UTC (permalink / raw)
To: Linus Torvalds; +Cc: Al Viro, Martin Brandenburg, linux-fsdevel
> it's in my tree now and I'll push it out after
That is beyond awesome!
I tried to make a signed tag, but never got past:
"You need a passphrase to unlock the secret key..."
it just sat there waiting for me to... do something?
I was ssh'd into my workstation at work, perhaps
the prompt came out there?
I config'd git with my public key as reported
by gpg --list-keys
"git config --global user.signingkey xyzzy"
Anyhow, I'll work to make sure I can do it
properly next time, thanks so much for
taking Orangefs!
And, please enjoy this cartoon I drew in the spirit it
is offered <g>:
http://myweb.clemson.edu/~hubcap/toons/shipIt.jpg
-Mike
On Sat, Mar 26, 2016 at 3:51 PM, Linus Torvalds
<torvalds@linux-foundation.org> wrote:
> On Sat, Mar 26, 2016 at 12:00 PM, Mike Marshall <hubcap@omnibond.com> wrote:
>>
>> I made the tag right on top of the last thing in our branch that we
>> got from Linus: b562e44f5
>
> So you really don't need to make *that* a tag.
>
> The only tag you want to have is the tag that describes your own
> top-of-tree if you want to send me a signed tag (which really is the
> preferred mode).
>
> Then, all you do is:
>
> - have some pointer to my tree - it's often just "origin", but you
> can also literally just fetch my tree into a separate branch
>
> (note the *fetch* - not a pull. So you can do something like
>
> - give that origin pointer as the start
>
> So something like
>
> git remote add linus
> git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
>
> would add the remote "linus" (unless you already have a remote
> "origin" that points to that upstream repository), and then you can
> just do
>
> git fetch linus
>
> and that will get whatever state I have at the time into your
> "linus/master" branch. Note that the "git remote add" you only need to
> do once (and again, a "git clone" will automatically add an "origin"
> remote, so you may have one already).
>
> Then, the best practices is to make a signed tag of *your* work - you
> could call it something like "for-linus-4.6", for example:
>
> git tag -s for-linus-4.6
>
> and write a tag message and sign it with your key. I prefer that
> signed tag to contain some useful description of what I'm actually
> pulling, not just "Orangefs: pull-tag-1". And I do really want it to
> be a *signed* tag for it to actually make sense.
>
> After that, just do
>
> git request-pull remotes/linus/master \
> git://git.kernel.org/pub/scm/linux/kernel/git/hubcap/linux.git
> tags/for-linus-4.6
>
> which should do the right thing.
>
> That said, the request-pull you sent out looks mostly fine - it's just
> that you did an unnecessary tag there to create the base commit that
> you really shouldn't have needed to do, and the tag you asked me to
> pull was an unsigned one and didn't contain any useful information.
>
> So I pulled it, but for next time:
>
> - please use a signed tag. I don't actually require it for kernel.org
> pulls, but it's nice, and it's particularly nice if the signed tag
> contents then describe what I'm pulling
>
> - don't do the extraneous tag that doesn't actually help or matter.
>
> but it's in my tree now and I'll push it out after
>
> Linus
^ permalink raw reply [flat|nested] 25+ messages in thread
* Re: Orangefs, v4.5 and the merge window...
2016-03-26 20:47 ` Mike Marshall
@ 2016-03-26 21:00 ` Linus Torvalds
0 siblings, 0 replies; 25+ messages in thread
From: Linus Torvalds @ 2016-03-26 21:00 UTC (permalink / raw)
To: Mike Marshall; +Cc: Al Viro, Martin Brandenburg, linux-fsdevel
On Sat, Mar 26, 2016 at 1:47 PM, Mike Marshall <hubcap@omnibond.com> wrote:
> > it's in my tree now and I'll push it out after
>
> That is beyond awesome!
>
> I tried to make a signed tag, but never got past:
>
> "You need a passphrase to unlock the secret key..."
>
> it just sat there waiting for me to... do something?
> I was ssh'd into my workstation at work, perhaps
> the prompt came out there?
Hmm. Are you running gpg-agent? That apparently gets confused easily.
Normally "git tag -s" should ask you to write a tag message (using the
same editor you write your commit messages with).
It should just ask for your passphrase, looking something like this:
You need a passphrase to unlock the secret key for
user: "xyz"
key-details-go-here
Enter passphrase:
but I've seen gpg-agent get confused before. Are you sure you have a
working gpg setup on that machine? It might also be that there's a GUI
window open on your workstation that you can't see over ssh.
I love the convenience of gpg-agent, but quite frankly, I gave up on
it years ago because of how fragile it was (although honestly, I think
most of the fragility I saw was with the gnome keyring integration, so
I don't know who to blame - I just decided that it's easier to type my
passphrases than it is to try to figure out which part of the mess was
broken).
Linus
^ permalink raw reply [flat|nested] 25+ messages in thread
end of thread, other threads:[~2016-03-26 21:00 UTC | newest]
Thread overview: 25+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-03-11 20:18 Orangefs, v4.5 and the merge window Mike Marshall
2016-03-11 21:47 ` Al Viro
2016-03-11 22:35 ` Mike Marshall
2016-03-14 21:03 ` Mike Marshall
2016-03-26 0:21 ` Al Viro
2016-03-26 1:00 ` Mike Marshall
[not found] ` <CA+55aFzLC_pdj_ds82YYab5D7jpYMj26s0Frofxxhk=j7SqnjA@mail.gmail.com>
2016-03-26 1:01 ` Al Viro
2016-03-26 1:07 ` Mike Marshall
[not found] ` <CA+55aFysWS9mP+QgfAR6LZpEbkp61MUPQu0zDoq7cafmr3M8SA@mail.gmail.com>
2016-03-26 3:55 ` Mike Marshall
2016-03-26 4:30 ` Al Viro
2016-03-26 12:07 ` Mike Marshall
2016-03-26 14:47 ` Al Viro
2016-03-26 15:34 ` Mike Marshall
2016-03-26 15:50 ` Al Viro
2016-03-26 17:36 ` Mike Marshall
2016-03-26 18:28 ` Al Viro
2016-03-26 18:37 ` Al Viro
2016-03-26 19:00 ` Mike Marshall
2016-03-26 19:51 ` Linus Torvalds
2016-03-26 20:47 ` Mike Marshall
2016-03-26 21:00 ` Linus Torvalds
2016-03-26 1:02 ` Mike Marshall
2016-03-15 4:04 ` Martin Brandenburg
2016-03-15 16:45 ` Martin Brandenburg
2016-03-17 20:45 ` [PATCH] orangefs: getattr work (was: Re: Orangefs, v4.5 and the merge window...) Martin Brandenburg
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.