mcctrl sysfs_files: vfs_readdir -> iterate_dir compat
vfs_readdir got removed in recent kernels Change-Id: Iac9a9954afefa0f6dbcdc2c94786cf747e21e1fe Fujitsu: POSTK_DEBUG_TEMP_FIX_22
This commit is contained in:
committed by
Masamichi Takagi
parent
6cf89076dc
commit
05afa8b6dd
@ -951,30 +951,14 @@ out:
|
||||
return error;
|
||||
} /* read_link() */
|
||||
|
||||
#ifdef POSTK_DEBUG_TEMP_FIX_22 /* iterate_dir() deadlock */
|
||||
static int setup_one_pci(struct mcctrl_usrdata *udp, const char *name)
|
||||
{
|
||||
#else /* POSTK_DEBUG_TEMP_FIX_22 */
|
||||
static int setup_one_pci(void *arg0, const char *name, int namlen,
|
||||
loff_t offset, u64 ino, unsigned d_type)
|
||||
{
|
||||
struct mcctrl_usrdata *udp = arg0;
|
||||
#endif /* POSTK_DEBUG_TEMP_FIX_22 */
|
||||
int error;
|
||||
char *buf = NULL;
|
||||
long node;
|
||||
struct sysfsm_bitmap_param param;
|
||||
|
||||
#ifdef POSTK_DEBUG_TEMP_FIX_22 /* iterate_dir() deadlock */
|
||||
dprintk("setup_one_pci(%p,%s)\n", udp, name);
|
||||
#else /* POSTK_DEBUG_TEMP_FIX_22 */
|
||||
dprintk("setup_one_pci(%p,%s,%d,%#lx,%#lx,%d)\n",
|
||||
arg0, name, namlen, (long)offset, (long)ino, d_type);
|
||||
if (namlen != 12) {
|
||||
error = 0;
|
||||
goto out;
|
||||
}
|
||||
#endif /* POSTK_DEBUG_TEMP_FIX_22 */
|
||||
|
||||
buf = (void *)__get_free_pages(GFP_KERNEL, 0);
|
||||
if (!buf) {
|
||||
@ -1026,17 +1010,10 @@ static int setup_one_pci(void *arg0, const char *name, int namlen,
|
||||
error = 0;
|
||||
out:
|
||||
free_pages((long)buf, 0);
|
||||
#ifdef POSTK_DEBUG_TEMP_FIX_22 /* iterate_dir() deadlock */
|
||||
dprintk("setup_one_pci(%p,%s): %d\n", udp, name, error);
|
||||
#else /* POSTK_DEBUG_TEMP_FIX_22 */
|
||||
dprintk("setup_one_pci(%p,%s,%d,%#lx,%#lx,%d): %d\n",
|
||||
arg0, name, namlen, (long)offset, (long)ino, d_type,
|
||||
error);
|
||||
#endif /* POSTK_DEBUG_TEMP_FIX_22 */
|
||||
return error;
|
||||
} /* setup_one_pci() */
|
||||
|
||||
#ifdef POSTK_DEBUG_TEMP_FIX_22 /* iterate_dir() deadlock */
|
||||
LIST_HEAD(pci_file_name_list);
|
||||
struct pci_file_name {
|
||||
char *name;
|
||||
@ -1083,9 +1060,9 @@ out:
|
||||
buf, name, namlen, (long)offset, (long)ino, d_type, error);
|
||||
return error;
|
||||
}
|
||||
#endif /* POSTK_DEBUG_TEMP_FIX_22 */
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,11,0)
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 11, 0) || \
|
||||
(defined(RHEL_RELEASE_CODE) && RHEL_RELEASE_CODE >= RHEL_RELEASE_VERSION(7, 5))
|
||||
typedef int (*mcctrl_filldir_t)(void *buf, const char *name, int namlen,
|
||||
loff_t offset, u64 ino, unsigned d_type);
|
||||
|
||||
@ -1095,8 +1072,13 @@ struct mcctrl_filler_args {
|
||||
void *buf;
|
||||
};
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 19, 0)
|
||||
static int mcctrl_filler(struct dir_context *ctx, const char *name,
|
||||
int namlen, loff_t offset, u64 ino, unsigned d_type)
|
||||
int namlen, loff_t offset, u64 ino, unsigned int d_type)
|
||||
#else
|
||||
static int mcctrl_filler(void *ctx, const char *name,
|
||||
int namlen, loff_t offset, u64 ino, unsigned int d_type)
|
||||
#endif
|
||||
{
|
||||
struct mcctrl_filler_args *args
|
||||
= container_of(ctx, struct mcctrl_filler_args, ctx);
|
||||
@ -1109,7 +1091,7 @@ static inline int mcctrl_vfs_readdir(struct file *file,
|
||||
{
|
||||
struct mcctrl_filler_args args = {
|
||||
.ctx.actor = &mcctrl_filler,
|
||||
.filler = (void *)filler,
|
||||
.filler = filler,
|
||||
.buf = buf,
|
||||
};
|
||||
|
||||
@ -1128,11 +1110,9 @@ static int setup_pci_files(struct mcctrl_usrdata *udp)
|
||||
int error;
|
||||
int er;
|
||||
struct file *fp = NULL;
|
||||
#ifdef POSTK_DEBUG_TEMP_FIX_22 /* iterate_dir() deadlock */
|
||||
int ret = 0;
|
||||
struct pci_file_name *cur;
|
||||
struct pci_file_name *next;
|
||||
#endif /* POSTK_DEBUG_TEMP_FIX_22 */
|
||||
|
||||
dprintk("setup_pci_files(%p)\n", udp);
|
||||
fp = filp_open("/sys/bus/pci/devices", O_DIRECTORY, 0);
|
||||
@ -1142,18 +1122,13 @@ static int setup_pci_files(struct mcctrl_usrdata *udp)
|
||||
goto out;
|
||||
}
|
||||
|
||||
#ifdef POSTK_DEBUG_TEMP_FIX_22 /* iterate_dir() deadlock */
|
||||
error = mcctrl_vfs_readdir(fp, &pci_file_name_gen, udp);
|
||||
#else /* POSTK_DEBUG_TEMP_FIX_22 */
|
||||
error = mcctrl_vfs_readdir(fp, &setup_one_pci, udp);
|
||||
#endif /* POSTK_DEBUG_TEMP_FIX_22 */
|
||||
if (error) {
|
||||
eprintk("mcctrl:setup_pci_files:"
|
||||
"mcctrl_vfs_readdir failed. %d\n", error);
|
||||
goto out;
|
||||
}
|
||||
|
||||
#ifdef POSTK_DEBUG_TEMP_FIX_22 /* iterate_dir() deadlock */
|
||||
list_for_each_entry_safe(cur, next, &pci_file_name_list, chain) {
|
||||
if (!ret) {
|
||||
ret = setup_one_pci(udp, cur->name);
|
||||
@ -1162,7 +1137,6 @@ static int setup_pci_files(struct mcctrl_usrdata *udp)
|
||||
kfree(cur->name);
|
||||
kfree(cur);
|
||||
}
|
||||
#endif /* POSTK_DEBUG_TEMP_FIX_22 */
|
||||
|
||||
error = 0;
|
||||
out:
|
||||
|
||||
Reference in New Issue
Block a user