/*
* Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
+ *
+ * Copyright (c) 2012, Intel Corporation.
*/
/*
* This file is part of Lustre, http://www.lustre.org/
/* in lprocfs_stat.c, to protect the private data for proc entries */
extern struct rw_semaphore _lprocfs_lock;
-/* to begin from 2.6.23, Linux defines self file_operations (proc_reg_file_ops)
- * in procfs, the proc file_operation defined by Lustre (lprocfs_generic_fops)
- * will be wrapped into the new defined proc_reg_file_ops, which instroduces
- * user count in proc_dir_entrey(pde_users) to protect the proc entry from
- * being deleted. then the protection lock (_lprocfs_lock) defined by Lustre
- * isn't necessary anymore for lprocfs_generic_fops(e.g. lprocfs_fops_read).
- * see bug19706 for detailed information.
- */
-#ifndef HAVE_PROCFS_USERS
-
-#define LPROCFS_ENTRY() \
-do { \
- down_read(&_lprocfs_lock); \
-} while(0)
-
-#define LPROCFS_EXIT() \
-do { \
- up_read(&_lprocfs_lock); \
-} while(0)
-
-#else
-#define LPROCFS_ENTRY() do{ }while(0)
-#define LPROCFS_EXIT() do{ }while(0)
-#endif
-
-#ifdef HAVE_PROCFS_DELETED
-
-#ifdef HAVE_PROCFS_USERS
-#error proc_dir_entry->deleted is conflicted with proc_dir_entry->pde_users
-#endif
-
static inline
-int LPROCFS_ENTRY_AND_CHECK(struct proc_dir_entry *dp)
-{
- LPROCFS_ENTRY();
- if ((dp)->deleted) {
- LPROCFS_EXIT();
- return -ENODEV;
- }
- return 0;
-}
-#elif defined(HAVE_PROCFS_USERS) /* !HAVE_PROCFS_DELETED*/
-static inline
-int LPROCFS_ENTRY_AND_CHECK(struct proc_dir_entry *dp)
+int LPROCFS_ENTRY_CHECK(struct proc_dir_entry *dp)
{
int deleted = 0;
return -ENODEV;
return 0;
}
-#else /* !HAVE_PROCFS_DELETED*/
-static inline
-int LPROCFS_ENTRY_AND_CHECK(struct proc_dir_entry *dp)
-{
- LPROCFS_ENTRY();
- return 0;
-}
-#endif /* HAVE_PROCFS_DELETED */
#define LPROCFS_SRCH_ENTRY() \
do { \
down_read(&_lprocfs_lock); \
typedef void *cfs_poll_table_t;
typedef struct cfs_param_file_ops {
- cfs_param_module_t owner;
- int (*open) (cfs_inode_t *, cfs_file_t *);
- loff_t (*llseek)(cfs_file_t *, loff_t, int);
- int (*release) (cfs_inode_t *, cfs_param_file_t *);
- unsigned int (*poll) (cfs_file_t *, cfs_poll_table_t *);
- ssize_t (*write) (cfs_file_t *, const char *, size_t, loff_t *);
- ssize_t (*read)(cfs_file_t *, char *, size_t, loff_t *);
+ cfs_param_module_t owner;
+ int (*open) (cfs_inode_t *, struct file *);
+ loff_t (*llseek)(struct file *, loff_t, int);
+ int (*release) (cfs_inode_t *, cfs_param_file_t *);
+ unsigned int (*poll) (struct file *, cfs_poll_table_t *);
+ ssize_t (*write) (struct file *, const char *, size_t, loff_t *);
+ ssize_t (*read)(struct file *, char *, size_t, loff_t *);
} cfs_param_file_ops_t;
typedef cfs_param_file_ops_t *cfs_lproc_filep_t;
rc = 0; \
} while(0)
-#define LPROCFS_ENTRY() do {} while(0)
-#define LPROCFS_EXIT() do {} while(0)
static inline
-int LPROCFS_ENTRY_AND_CHECK(cfs_param_dentry_t *dp)
+int LPROCFS_ENTRY_CHECK(cfs_param_dentry_t *dp)
{
- LPROCFS_ENTRY();
return 0;
}
#define LPROCFS_WRITE_ENTRY() do {} while(0)