Lines Matching +full:set +full:- +full:aces
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
19 #include <linux/backing-dev.h>
38 * Partial file-locking emulation mode. (The problem being that AFS3 only
39 * allows whole-file locks and no upgrading/downgrading).
51 bool autocell; /* T if set auto mount operation */
54 enum afs_flock_mode flock_mode; /* Partial file-locking emulation mode */
95 * a record of an in-progress RxRPC call
113 union { /* Convenience for ->def_iter */
131 unsigned int max_lifespan; /* Maximum lifespan in secs to set if not 0 */
136 unsigned char addr_ix; /* Address in ->alist */
162 * - returning an error will cause the call to be aborted
182 struct list_head vnode_link; /* Link in vnode->wb_keys */
186 * AFS open file information record. Pointed to by file->private_data.
195 struct afs_file *af = file->private_data; in afs_file_key()
197 return af->key; in afs_file_key()
224 * - there's one superblock per volume
236 return sb->s_fs_info; in AFS_FS_S()
242 * Set of substitutes for @sys.
340 * simply by pointing AFSDB/SRV records for two names at the same set of VL
345 * Cells only exist in the sense that (a) a cell's name maps to a set of VL
358 struct rb_node net_node; /* Node in net->cells */
371 #define AFS_CELL_FL_NO_GC 0 /* The cell was added manually, don't auto-gc */
398 char *name; /* Cell name, case-flattened and NUL-padded */
433 char name[]; /* Server name, case-flattened */
462 * This is pointed to by cell->vldb_entries, indexed by name.
468 #define AFS_VLDB_HAS_RW 0 /* - R/W volume exists */
469 #define AFS_VLDB_HAS_RO 1 /* - R/O volume exists */
470 #define AFS_VLDB_HAS_BAK 2 /* - Backup volume exists */
471 #define AFS_VLDB_QUERY_VALID 3 /* - Record is valid */
472 #define AFS_VLDB_QUERY_ERROR 4 /* - VL server returned error */
483 u8 name[AFS_MAXVOLNAME + 1]; /* NUL-padded volume name */
498 struct rb_node uuid_rb; /* Link in net->fs_servers */
501 struct list_head probe_link; /* Link in net->fs_probe_list */
502 struct hlist_node addr4_link; /* Link in net->fs_addresses4 */
503 struct hlist_node addr6_link; /* Link in net->fs_addresses6 */
504 struct hlist_node proc_link; /* Link in net->fs_proc */
530 unsigned cb_s_break; /* Break-everything counter. */
562 unsigned int seq; /* Set to ->servers_seq when installed */
578 struct rb_node cell_node; /* Link in cell->volumes */
579 struct hlist_node proc_link; /* Link in cell->proc_volumes */
582 #define AFS_VOLUME_NEEDS_UPDATE 0 /* - T if an update needs performing */
583 #define AFS_VOLUME_UPDATING 1 /* - T if an update is in progress */
584 #define AFS_VOLUME_WAIT 2 /* - T if users must wait for update */
585 #define AFS_VOLUME_DELETED 3 /* - T if volume appears deleted */
586 #define AFS_VOLUME_OFFLINE 4 /* - T if volume offline notice given */
587 #define AFS_VOLUME_BUSY 5 /* - T if volume busy notice given */
588 #define AFS_VOLUME_MAYBE_NO_IBULK 6 /* - T if some servers don't have InlineBulkStatus */
589 #define AFS_VOLUME_RM_TREE 7 /* - Set if volume removed from cell->volumes */
594 rwlock_t servers_lock; /* Lock for ->servers */
595 unsigned int servers_seq; /* Incremented each time ->servers changes */
597 unsigned cb_v_break; /* Break-everything counter. */
601 char type_force; /* force volume type (suppress R/O -> R/W) */
603 u8 name[AFS_MAXVOLNAME + 1]; /* NUL-padded volume name */
637 #define AFS_VNODE_CB_PROMISED 0 /* Set if vnode has a callback promise */
638 #define AFS_VNODE_UNSET 1 /* set if vnode attributes not yet set */
639 #define AFS_VNODE_DIR_VALID 2 /* Set if dir contents are valid */
640 #define AFS_VNODE_ZAP_DATA 3 /* set if vnode's data should be invalidated */
641 #define AFS_VNODE_DELETED 4 /* set if vnode deleted on server */
642 #define AFS_VNODE_MOUNTPOINT 5 /* set if vnode is a mountpoint symlink */
643 #define AFS_VNODE_AUTOCELL 6 /* set if Vnode is an auto mount point */
644 #define AFS_VNODE_PSEUDODIR 7 /* set if Vnode is a pseudo directory */
645 #define AFS_VNODE_NEW_CONTENT 8 /* Set if file has new content (create/trunc-0) */
646 #define AFS_VNODE_SILLY_DELETED 9 /* Set if file has been silly-deleted */
647 #define AFS_VNODE_MODIFYING 10 /* Set if we're performing a modification op */
660 struct list_head cb_mmap_link; /* Link in cell->fs_open_mmaps */
663 unsigned int cb_fs_s_break; /* Mass server break counter (cell->fs_s_break) */
664 unsigned int cb_s_break; /* Mass break counter on ->server */
665 unsigned int cb_v_break; /* Mass break counter on ->volume */
667 seqlock_t cb_lock; /* Lock for ->cb_server, ->status, ->cb_*break */
675 return netfs_i_cookie(&vnode->netfs); in afs_vnode_cache()
685 vnode->netfs.cache = cookie; in afs_vnode_set_cache()
687 mapping_set_release_always(vnode->netfs.inode.i_mapping); in afs_vnode_set_cache()
735 * Cursor for iterating over a set of volume location servers.
747 #define AFS_VL_CURSOR_STOP 0x0001 /* Set to cease iteration */
748 #define AFS_VL_CURSOR_RETRY 0x0002 /* Set to do a retry */
749 #define AFS_VL_CURSOR_RETRIED 0x0004 /* Set if started a retry */
779 bool modification:1; /* Set if the content gets modified */
800 struct timespec64 ctime; /* Change time to set */
810 int which; /* Which ->file[] to fetch for */
836 bool laundering; /* Laundering page, PG_writeback not set */
860 #define AFS_OPERATION_STOP 0x0001 /* Set to cease iteration */
861 #define AFS_OPERATION_VBUSY 0x0002 /* Set if seen VBUSY */
862 #define AFS_OPERATION_VMOVED 0x0004 /* Set if seen VMOVED */
863 #define AFS_OPERATION_VNOVOL 0x0008 /* Set if seen VNOVOL */
864 #define AFS_OPERATION_CUR_ONLY 0x0010 /* Set if current server only (file lock held) */
865 #define AFS_OPERATION_NO_VSLEEP 0x0020 /* Set to prevent sleep on VBUSY, VOFFLINE, ... */
866 #define AFS_OPERATION_UNINTR 0x0040 /* Set if op is uninterruptible */
867 #define AFS_OPERATION_DOWNGRADE 0x0080 /* Set to retry with downgraded opcode */
868 #define AFS_OPERATION_LOCK_0 0x0100 /* Set if have io_lock on file[0] */
869 #define AFS_OPERATION_LOCK_1 0x0200 /* Set if have io_lock on file[1] */
870 #define AFS_OPERATION_TRIED_ALL 0x0400 /* Set if we've tried all the fileservers */
871 #define AFS_OPERATION_RETRY_SERVER 0x0800 /* Set if we should retry the current server */
872 #define AFS_OPERATION_DIR_CONFLICT 0x1000 /* Set if we detected a 3rd-party dir change */
885 aux->data_version = cpu_to_be64(vnode->status.data_version); in afs_set_cache_aux()
894 i_size_read(&vnode->netfs.inode), flags); in afs_invalidate_cache()
898 * We use folio->private to hold the amount of the folio that we've written to,
915 int shift = folio_shift(folio) - (__AFS_FOLIO_PRIV_SHIFT - 1); in afs_folio_dirty_resolution()
939 to = (to - 1) >> res; in afs_folio_dirty()
962 refcount_inc(&alist->usage); in afs_get_addrlist()
991 return vnode->cb_break + vnode->cb_v_break; in afs_calc_vnode_cb_break()
997 return cb_break != (vnode->cb_break + vnode->volume->cb_v_break); in afs_cb_is_broken()
1080 refcount_inc(&req->usage); in afs_get_read()
1138 op->error = -ENOMEM; in afs_op_nomem()
1144 op->file[n].vnode = vnode; in afs_op_set_vnode()
1145 op->file[n].need_io_lock = true; in afs_op_set_vnode()
1151 op->file[n].fid = *fid; in afs_op_set_fid()
1198 return afs_net(AFS_FS_S(sb)->net_ns); in afs_sb2net()
1203 return afs_sb2net(dentry->d_sb); in afs_d2net()
1208 return afs_sb2net(inode->i_sb); in afs_i2net()
1213 return afs_i2net(&vnode->netfs.inode); in afs_v2net()
1226 #define afs_stat_v(vnode, n) __afs_stat(&afs_v2net(vnode)->n)
1290 op->call = call; in afs_make_op_call()
1291 op->type = call->type; in afs_make_op_call()
1292 call->op = op; in afs_make_op_call()
1293 call->key = op->key; in afs_make_op_call()
1294 call->intr = !(op->flags & AFS_OPERATION_UNINTR); in afs_make_op_call()
1295 afs_make_call(&op->ac, call, gfp); in afs_make_op_call()
1300 call->iov_len = size; in afs_extract_begin()
1301 call->kvec[0].iov_base = buf; in afs_extract_begin()
1302 call->kvec[0].iov_len = size; in afs_extract_begin()
1303 iov_iter_kvec(&call->def_iter, ITER_DEST, call->kvec, 1, size); in afs_extract_begin()
1308 call->iov_len = sizeof(call->tmp); in afs_extract_to_tmp()
1309 afs_extract_begin(call, &call->tmp, sizeof(call->tmp)); in afs_extract_to_tmp()
1314 call->iov_len = sizeof(call->tmp64); in afs_extract_to_tmp64()
1315 afs_extract_begin(call, &call->tmp64, sizeof(call->tmp64)); in afs_extract_to_tmp64()
1320 call->iov_len = size; in afs_extract_discard()
1321 iov_iter_discard(&call->def_iter, ITER_DEST, size); in afs_extract_discard()
1326 call->iov_len = size; in afs_extract_to_buf()
1327 afs_extract_begin(call, call->buffer, size); in afs_extract_to_buf()
1338 return READ_ONCE(call->state) == state; in afs_check_call_state()
1347 spin_lock_bh(&call->state_lock); in afs_set_call_state()
1348 if (call->state == from) { in afs_set_call_state()
1349 call->state = to; in afs_set_call_state()
1353 spin_unlock_bh(&call->state_lock); in afs_set_call_state()
1363 spin_lock_bh(&call->state_lock); in afs_set_call_complete()
1364 state = call->state; in afs_set_call_complete()
1366 call->abort_code = remote_abort; in afs_set_call_complete()
1367 call->error = error; in afs_set_call_complete()
1368 call->state = AFS_CALL_COMPLETE; in afs_set_call_complete()
1373 spin_unlock_bh(&call->state_lock); in afs_set_call_complete()
1377 /* Asynchronous calls have two refs to release - one from the alloc and in afs_set_call_complete()
1378 * one queued with the work item - and we can't just deallocate the in afs_set_call_complete()
1381 if (call->drop_ref) in afs_set_call_complete()
1421 atomic_inc(&net->servers_outstanding); in afs_inc_servers_outstanding()
1426 if (atomic_dec_and_test(&net->servers_outstanding)) in afs_dec_servers_outstanding()
1427 wake_up_var(&net->servers_outstanding); in afs_dec_servers_outstanding()
1432 return list_empty(&server->probe_link); in afs_is_probing_server()
1440 refcount_inc(&slist->usage); in afs_get_serverlist()
1493 refcount_inc(&vlserver->ref); in afs_get_vlserver()
1500 refcount_inc(&vllist->ref); in afs_get_vlserverlist()
1574 u32 num_cleaned; /* Number of ACEs removed due to subject removal */
1576 #define YFS_ACL_WANT_ACL 0x01 /* Set if caller wants ->acl */
1577 #define YFS_ACL_WANT_VOL_ACL 0x02 /* Set if caller wants ->vol_acl */
1594 return &vnode->netfs.inode; in AFS_VNODE_TO_I()
1598 * Note that a dentry got changed. We need to set d_fsdata to the data version
1606 if (!op->error) in afs_update_dentry_version()
1607 dentry->d_fsdata = in afs_update_dentry_version()
1608 (void *)(unsigned long)dir_vp->scb.status.data_version; in afs_update_dentry_version()
1612 * Set the file size and block count. Estimate the number of 512 bytes blocks
1617 i_size_write(&vnode->netfs.inode, size); in afs_set_i_size()
1618 vnode->netfs.inode.i_blocks = ((size + 1023) >> 10) << 1; in afs_set_i_size()
1629 if (dvp->dv_before + dvp->dv_delta != dvp->scb.status.data_version) in afs_check_dir_conflict()
1630 op->flags |= AFS_OPERATION_DIR_CONFLICT; in afs_check_dir_conflict()
1635 trace_afs_io_error(call->debug_id, -EIO, where); in afs_io_error()
1636 return -EIO; in afs_io_error()
1641 trace_afs_file_error(vnode, -EIO, where); in afs_bad()
1642 return -EIO; in afs_bad()
1652 printk("[%-6.6s] "FMT"\n", current->comm ,##__VA_ARGS__)