cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ocfs2_lockid.h (2655B)


      1/* SPDX-License-Identifier: GPL-2.0-or-later */
      2/*
      3 * ocfs2_lockid.h
      4 *
      5 * Defines OCFS2 lockid bits.
      6 *
      7 * Copyright (C) 2002, 2005 Oracle.  All rights reserved.
      8 */
      9
     10#ifndef OCFS2_LOCKID_H
     11#define OCFS2_LOCKID_H
     12
     13/* lock ids are made up in the following manner:
     14 * name[0]     --> type
     15 * name[1-6]   --> 6 pad characters, reserved for now
     16 * name[7-22]  --> block number, expressed in hex as 16 chars
     17 * name[23-30] --> i_generation, expressed in hex 8 chars
     18 * name[31]    --> '\0' */
     19#define OCFS2_LOCK_ID_MAX_LEN  32
     20#define OCFS2_LOCK_ID_PAD "000000"
     21
     22#define OCFS2_DENTRY_LOCK_INO_START 18
     23
     24enum ocfs2_lock_type {
     25	OCFS2_LOCK_TYPE_META = 0,
     26	OCFS2_LOCK_TYPE_DATA,
     27	OCFS2_LOCK_TYPE_SUPER,
     28	OCFS2_LOCK_TYPE_RENAME,
     29	OCFS2_LOCK_TYPE_RW,
     30	OCFS2_LOCK_TYPE_DENTRY,
     31	OCFS2_LOCK_TYPE_OPEN,
     32	OCFS2_LOCK_TYPE_FLOCK,
     33	OCFS2_LOCK_TYPE_QINFO,
     34	OCFS2_LOCK_TYPE_NFS_SYNC,
     35	OCFS2_LOCK_TYPE_ORPHAN_SCAN,
     36	OCFS2_LOCK_TYPE_REFCOUNT,
     37	OCFS2_LOCK_TYPE_TRIM_FS,
     38	OCFS2_NUM_LOCK_TYPES
     39};
     40
     41static inline char ocfs2_lock_type_char(enum ocfs2_lock_type type)
     42{
     43	char c;
     44	switch (type) {
     45		case OCFS2_LOCK_TYPE_META:
     46			c = 'M';
     47			break;
     48		case OCFS2_LOCK_TYPE_DATA:
     49			c = 'D';
     50			break;
     51		case OCFS2_LOCK_TYPE_SUPER:
     52			c = 'S';
     53			break;
     54		case OCFS2_LOCK_TYPE_RENAME:
     55			c = 'R';
     56			break;
     57		case OCFS2_LOCK_TYPE_RW:
     58			c = 'W';
     59			break;
     60		case OCFS2_LOCK_TYPE_DENTRY:
     61			c = 'N';
     62			break;
     63		case OCFS2_LOCK_TYPE_OPEN:
     64			c = 'O';
     65			break;
     66		case OCFS2_LOCK_TYPE_FLOCK:
     67			c = 'F';
     68			break;
     69		case OCFS2_LOCK_TYPE_QINFO:
     70			c = 'Q';
     71			break;
     72		case OCFS2_LOCK_TYPE_NFS_SYNC:
     73			c = 'Y';
     74			break;
     75		case OCFS2_LOCK_TYPE_ORPHAN_SCAN:
     76			c = 'P';
     77			break;
     78		case OCFS2_LOCK_TYPE_REFCOUNT:
     79			c = 'T';
     80			break;
     81		case OCFS2_LOCK_TYPE_TRIM_FS:
     82			c = 'I';
     83			break;
     84		default:
     85			c = '\0';
     86	}
     87
     88	return c;
     89}
     90
     91static char *ocfs2_lock_type_strings[] = {
     92	[OCFS2_LOCK_TYPE_META] = "Meta",
     93	[OCFS2_LOCK_TYPE_DATA] = "Data",
     94	[OCFS2_LOCK_TYPE_SUPER] = "Super",
     95	[OCFS2_LOCK_TYPE_RENAME] = "Rename",
     96	/* Need to differntiate from [R]ename.. serializing writes is the
     97	 * important job it does, anyway. */
     98	[OCFS2_LOCK_TYPE_RW] = "Write/Read",
     99	[OCFS2_LOCK_TYPE_DENTRY] = "Dentry",
    100	[OCFS2_LOCK_TYPE_OPEN] = "Open",
    101	[OCFS2_LOCK_TYPE_FLOCK] = "Flock",
    102	[OCFS2_LOCK_TYPE_QINFO] = "Quota",
    103	[OCFS2_LOCK_TYPE_NFS_SYNC] = "NFSSync",
    104	[OCFS2_LOCK_TYPE_ORPHAN_SCAN] = "OrphanScan",
    105	[OCFS2_LOCK_TYPE_REFCOUNT] = "Refcount",
    106	[OCFS2_LOCK_TYPE_TRIM_FS] = "TrimFs",
    107};
    108
    109static inline const char *ocfs2_lock_type_string(enum ocfs2_lock_type type)
    110{
    111#ifdef __KERNEL__
    112	BUG_ON(type >= OCFS2_NUM_LOCK_TYPES);
    113#endif
    114	return ocfs2_lock_type_strings[type];
    115}
    116
    117#endif  /* OCFS2_LOCKID_H */