mirror of https://gitee.com/openkylin/linux.git
SUNRPC: set per-net PipeFS superblock before notification
There can be a case, when on MOUNT event RPC client (after it's dentries were created) is not longer hold by anyone except notification callback. I.e. on release this client will be destoroyed. And it's dentries have to be destroyed as well. Which in turn requires per-net PipeFS superblock to be set. Signed-off-by: Stanislav Kinsbursky <skinsbursky@parallels.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
This commit is contained in:
parent
7aab449e5a
commit
37629b572c
|
@ -1126,19 +1126,20 @@ rpc_fill_super(struct super_block *sb, void *data, int silent)
|
|||
return -ENOMEM;
|
||||
dprintk("RPC: sending pipefs MOUNT notification for net %p%s\n", net,
|
||||
NET_NAME(net));
|
||||
sn->pipefs_sb = sb;
|
||||
err = blocking_notifier_call_chain(&rpc_pipefs_notifier_list,
|
||||
RPC_PIPEFS_MOUNT,
|
||||
sb);
|
||||
if (err)
|
||||
goto err_depopulate;
|
||||
sb->s_fs_info = get_net(net);
|
||||
sn->pipefs_sb = sb;
|
||||
return 0;
|
||||
|
||||
err_depopulate:
|
||||
blocking_notifier_call_chain(&rpc_pipefs_notifier_list,
|
||||
RPC_PIPEFS_UMOUNT,
|
||||
sb);
|
||||
sn->pipefs_sb = NULL;
|
||||
__rpc_depopulate(root, files, RPCAUTH_lockd, RPCAUTH_RootEOF);
|
||||
return err;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue