• Home
  • Raw
  • Download

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 */
382 spinlock_t vs_lock; /* Lock for server->volumes */
399 char *name; /* Cell name, case-flattened and NUL-padded */
434 char name[]; /* Server name, case-flattened */
463 * This is pointed to by cell->vldb_entries, indexed by name.
469 #define AFS_VLDB_HAS_RW 0 /* - R/W volume exists */
470 #define AFS_VLDB_HAS_RO 1 /* - R/O volume exists */
471 #define AFS_VLDB_HAS_BAK 2 /* - Backup volume exists */
472 #define AFS_VLDB_QUERY_VALID 3 /* - Record is valid */
473 #define AFS_VLDB_QUERY_ERROR 4 /* - VL server returned error */
484 u8 name[AFS_MAXVOLNAME + 1]; /* NUL-padded volume name */
499 struct rb_node uuid_rb; /* Link in net->fs_servers */
502 struct list_head probe_link; /* Link in net->fs_probe_list */
503 struct hlist_node addr4_link; /* Link in net->fs_addresses4 */
504 struct hlist_node addr6_link; /* Link in net->fs_addresses6 */
505 struct hlist_node proc_link; /* Link in net->fs_proc */
532 unsigned cb_s_break; /* Break-everything counter. */
556 struct list_head slink; /* Link in server->volumes */
566 unsigned int seq; /* Set to ->servers_seq when installed */
581 struct rb_node cell_node; /* Link in cell->volumes */
582 struct hlist_node proc_link; /* Link in cell->proc_volumes */
585 #define AFS_VOLUME_NEEDS_UPDATE 0 /* - T if an update needs performing */
586 #define AFS_VOLUME_UPDATING 1 /* - T if an update is in progress */
587 #define AFS_VOLUME_WAIT 2 /* - T if users must wait for update */
588 #define AFS_VOLUME_DELETED 3 /* - T if volume appears deleted */
589 #define AFS_VOLUME_OFFLINE 4 /* - T if volume offline notice given */
590 #define AFS_VOLUME_BUSY 5 /* - T if volume busy notice given */
591 #define AFS_VOLUME_MAYBE_NO_IBULK 6 /* - T if some servers don't have InlineBulkStatus */
592 #define AFS_VOLUME_RM_TREE 7 /* - Set if volume removed from cell->volumes */
597 rwlock_t servers_lock; /* Lock for ->servers */
598 unsigned int servers_seq; /* Incremented each time ->servers changes */
600 unsigned cb_v_break; /* Break-everything counter. */
604 char type_force; /* force volume type (suppress R/O -> R/W) */
606 u8 name[AFS_MAXVOLNAME + 1]; /* NUL-padded volume name */
640 #define AFS_VNODE_CB_PROMISED 0 /* Set if vnode has a callback promise */
641 #define AFS_VNODE_UNSET 1 /* set if vnode attributes not yet set */
642 #define AFS_VNODE_DIR_VALID 2 /* Set if dir contents are valid */
643 #define AFS_VNODE_ZAP_DATA 3 /* set if vnode's data should be invalidated */
644 #define AFS_VNODE_DELETED 4 /* set if vnode deleted on server */
645 #define AFS_VNODE_MOUNTPOINT 5 /* set if vnode is a mountpoint symlink */
646 #define AFS_VNODE_AUTOCELL 6 /* set if Vnode is an auto mount point */
647 #define AFS_VNODE_PSEUDODIR 7 /* set if Vnode is a pseudo directory */
648 #define AFS_VNODE_NEW_CONTENT 8 /* Set if file has new content (create/trunc-0) */
649 #define AFS_VNODE_SILLY_DELETED 9 /* Set if file has been silly-deleted */
650 #define AFS_VNODE_MODIFYING 10 /* Set if we're performing a modification op */
663 struct list_head cb_mmap_link; /* Link in cell->fs_open_mmaps */
666 unsigned int cb_fs_s_break; /* Mass server break counter (cell->fs_s_break) */
667 unsigned int cb_s_break; /* Mass break counter on ->server */
668 unsigned int cb_v_break; /* Mass break counter on ->volume */
670 seqlock_t cb_lock; /* Lock for ->cb_server, ->status, ->cb_*break */
678 return netfs_i_cookie(&vnode->netfs); in afs_vnode_cache()
688 vnode->netfs.cache = cookie; in afs_vnode_set_cache()
690 mapping_set_release_always(vnode->netfs.inode.i_mapping); in afs_vnode_set_cache()
738 * Cursor for iterating over a set of volume location servers.
750 #define AFS_VL_CURSOR_STOP 0x0001 /* Set to cease iteration */
751 #define AFS_VL_CURSOR_RETRY 0x0002 /* Set to do a retry */
752 #define AFS_VL_CURSOR_RETRIED 0x0004 /* Set if started a retry */
782 bool modification:1; /* Set if the content gets modified */
803 struct timespec64 ctime; /* Change time to set */
813 int which; /* Which ->file[] to fetch for */
839 bool laundering; /* Laundering page, PG_writeback not set */
863 #define AFS_OPERATION_STOP 0x0001 /* Set to cease iteration */
864 #define AFS_OPERATION_VBUSY 0x0002 /* Set if seen VBUSY */
865 #define AFS_OPERATION_VMOVED 0x0004 /* Set if seen VMOVED */
866 #define AFS_OPERATION_VNOVOL 0x0008 /* Set if seen VNOVOL */
867 #define AFS_OPERATION_CUR_ONLY 0x0010 /* Set if current server only (file lock held) */
868 #define AFS_OPERATION_NO_VSLEEP 0x0020 /* Set to prevent sleep on VBUSY, VOFFLINE, ... */
869 #define AFS_OPERATION_UNINTR 0x0040 /* Set if op is uninterruptible */
870 #define AFS_OPERATION_DOWNGRADE 0x0080 /* Set to retry with downgraded opcode */
871 #define AFS_OPERATION_LOCK_0 0x0100 /* Set if have io_lock on file[0] */
872 #define AFS_OPERATION_LOCK_1 0x0200 /* Set if have io_lock on file[1] */
873 #define AFS_OPERATION_TRIED_ALL 0x0400 /* Set if we've tried all the fileservers */
874 #define AFS_OPERATION_RETRY_SERVER 0x0800 /* Set if we should retry the current server */
875 #define AFS_OPERATION_DIR_CONFLICT 0x1000 /* Set if we detected a 3rd-party dir change */
888 aux->data_version = cpu_to_be64(vnode->status.data_version); in afs_set_cache_aux()
897 i_size_read(&vnode->netfs.inode), flags); in afs_invalidate_cache()
901 * We use folio->private to hold the amount of the folio that we've written to,
918 int shift = folio_shift(folio) - (__AFS_FOLIO_PRIV_SHIFT - 1); in afs_folio_dirty_resolution()
942 to = (to - 1) >> res; in afs_folio_dirty()
965 refcount_inc(&alist->usage); in afs_get_addrlist()
994 return vnode->cb_break + vnode->cb_v_break; in afs_calc_vnode_cb_break()
1000 return cb_break != (vnode->cb_break + vnode->volume->cb_v_break); in afs_cb_is_broken()
1085 refcount_inc(&req->usage); in afs_get_read()
1143 op->error = -ENOMEM; in afs_op_nomem()
1149 op->file[n].vnode = vnode; in afs_op_set_vnode()
1150 op->file[n].need_io_lock = true; in afs_op_set_vnode()
1156 op->file[n].fid = *fid; in afs_op_set_fid()
1203 return afs_net(AFS_FS_S(sb)->net_ns); in afs_sb2net()
1208 return afs_sb2net(dentry->d_sb); in afs_d2net()
1213 return afs_sb2net(inode->i_sb); in afs_i2net()
1218 return afs_i2net(&vnode->netfs.inode); in afs_v2net()
1231 #define afs_stat_v(vnode, n) __afs_stat(&afs_v2net(vnode)->n)
1294 int r = refcount_read(&call->ref); in afs_see_call()
1296 trace_afs_call(call->debug_id, why, r, in afs_see_call()
1297 atomic_read(&call->net->nr_outstanding_calls), in afs_see_call()
1304 op->call = call; in afs_make_op_call()
1305 op->type = call->type; in afs_make_op_call()
1306 call->op = op; in afs_make_op_call()
1307 call->key = op->key; in afs_make_op_call()
1308 call->intr = !(op->flags & AFS_OPERATION_UNINTR); in afs_make_op_call()
1309 afs_make_call(&op->ac, call, gfp); in afs_make_op_call()
1314 call->iov_len = size; in afs_extract_begin()
1315 call->kvec[0].iov_base = buf; in afs_extract_begin()
1316 call->kvec[0].iov_len = size; in afs_extract_begin()
1317 iov_iter_kvec(&call->def_iter, ITER_DEST, call->kvec, 1, size); in afs_extract_begin()
1322 call->iov_len = sizeof(call->tmp); in afs_extract_to_tmp()
1323 afs_extract_begin(call, &call->tmp, sizeof(call->tmp)); in afs_extract_to_tmp()
1328 call->iov_len = sizeof(call->tmp64); in afs_extract_to_tmp64()
1329 afs_extract_begin(call, &call->tmp64, sizeof(call->tmp64)); in afs_extract_to_tmp64()
1334 call->iov_len = size; in afs_extract_discard()
1335 iov_iter_discard(&call->def_iter, ITER_DEST, size); in afs_extract_discard()
1340 call->iov_len = size; in afs_extract_to_buf()
1341 afs_extract_begin(call, call->buffer, size); in afs_extract_to_buf()
1352 return READ_ONCE(call->state) == state; in afs_check_call_state()
1361 spin_lock_bh(&call->state_lock); in afs_set_call_state()
1362 if (call->state == from) { in afs_set_call_state()
1363 call->state = to; in afs_set_call_state()
1367 spin_unlock_bh(&call->state_lock); in afs_set_call_state()
1377 spin_lock_bh(&call->state_lock); in afs_set_call_complete()
1378 state = call->state; in afs_set_call_complete()
1380 call->abort_code = remote_abort; in afs_set_call_complete()
1381 call->error = error; in afs_set_call_complete()
1382 call->state = AFS_CALL_COMPLETE; in afs_set_call_complete()
1387 spin_unlock_bh(&call->state_lock); in afs_set_call_complete()
1391 /* Asynchronous calls have two refs to release - one from the alloc and in afs_set_call_complete()
1392 * one queued with the work item - and we can't just deallocate the in afs_set_call_complete()
1395 if (call->drop_ref) in afs_set_call_complete()
1435 atomic_inc(&net->servers_outstanding); in afs_inc_servers_outstanding()
1440 if (atomic_dec_and_test(&net->servers_outstanding)) in afs_dec_servers_outstanding()
1441 wake_up_var(&net->servers_outstanding); in afs_dec_servers_outstanding()
1446 return list_empty(&server->probe_link); in afs_is_probing_server()
1454 refcount_inc(&slist->usage); in afs_get_serverlist()
1511 refcount_inc(&vlserver->ref); in afs_get_vlserver()
1518 refcount_inc(&vllist->ref); in afs_get_vlserverlist()
1592 u32 num_cleaned; /* Number of ACEs removed due to subject removal */
1594 #define YFS_ACL_WANT_ACL 0x01 /* Set if caller wants ->acl */
1595 #define YFS_ACL_WANT_VOL_ACL 0x02 /* Set if caller wants ->vol_acl */
1612 return &vnode->netfs.inode; in AFS_VNODE_TO_I()
1616 * Note that a dentry got changed. We need to set d_fsdata to the data version
1624 if (!op->error) in afs_update_dentry_version()
1625 dentry->d_fsdata = in afs_update_dentry_version()
1626 (void *)(unsigned long)dir_vp->scb.status.data_version; in afs_update_dentry_version()
1630 * Set the file size and block count. Estimate the number of 512 bytes blocks
1635 i_size_write(&vnode->netfs.inode, size); in afs_set_i_size()
1636 vnode->netfs.inode.i_blocks = ((size + 1023) >> 10) << 1; in afs_set_i_size()
1647 if (dvp->dv_before + dvp->dv_delta != dvp->scb.status.data_version) in afs_check_dir_conflict()
1648 op->flags |= AFS_OPERATION_DIR_CONFLICT; in afs_check_dir_conflict()
1653 trace_afs_io_error(call->debug_id, -EIO, where); in afs_io_error()
1654 return -EIO; in afs_io_error()
1659 trace_afs_file_error(vnode, -EIO, where); in afs_bad()
1660 return -EIO; in afs_bad()
1670 printk("[%-6.6s] "FMT"\n", current->comm ,##__VA_ARGS__)