139
139
spin_lock(&ino->i_lock);
140
140
if (test_bit(NFS_LAYOUT_BULK_RECALL, &lo->plh_flags) ||
141
141
mark_matching_lsegs_invalid(lo, &free_me_list,
142
args->cbl_range.iomode))
143
143
rv = NFS4ERR_DELAY;
145
145
rv = NFS4ERR_NOMATCHING_LAYOUT;
184
184
ino = lo->plh_inode;
185
185
spin_lock(&ino->i_lock);
186
186
set_bit(NFS_LAYOUT_BULK_RECALL, &lo->plh_flags);
187
if (mark_matching_lsegs_invalid(lo, &free_me_list, range.iomode))
187
if (mark_matching_lsegs_invalid(lo, &free_me_list, &range))
188
188
rv = NFS4ERR_DELAY;
189
189
list_del_init(&lo->plh_bulk_recall);
190
190
spin_unlock(&ino->i_lock);
191
pnfs_free_lseg_list(&free_me_list);
191
192
put_layout_hdr(lo);
194
pnfs_free_lseg_list(&free_me_list);
241
241
do_callback_layoutrecall(clp, &args);
244
__be32 nfs4_callback_devicenotify(struct cb_devicenotifyargs *args,
245
void *dummy, struct cb_process_state *cps)
249
struct nfs_client *clp = cps->clp;
250
struct nfs_server *server = NULL;
252
dprintk("%s: -->\n", __func__);
255
res = cpu_to_be32(NFS4ERR_OP_NOT_IN_SESSION);
259
for (i = 0; i < args->ndevs; i++) {
260
struct cb_devicenotifyitem *dev = &args->devs[i];
263
server->pnfs_curr_ld->id != dev->cbd_layout_type) {
265
list_for_each_entry_rcu(server, &clp->cl_superblocks, client_link)
266
if (server->pnfs_curr_ld &&
267
server->pnfs_curr_ld->id == dev->cbd_layout_type) {
272
dprintk("%s: layout type %u not found\n",
273
__func__, dev->cbd_layout_type);
278
if (dev->cbd_notify_type == NOTIFY_DEVICEID4_CHANGE)
279
dprintk("%s: NOTIFY_DEVICEID4_CHANGE not supported, "
280
"deleting instead\n", __func__);
281
nfs4_delete_deviceid(server->pnfs_curr_ld, clp, &dev->cbd_dev_id);
286
dprintk("%s: exit with status = %u\n",
287
__func__, be32_to_cpu(res));
244
291
int nfs41_validate_delegation_stateid(struct nfs_delegation *delegation, const nfs4_stateid *stateid)
246
293
if (delegation == NULL)