-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
* GPL HEADER START
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
struct bio *lo_biotail;
int lo_state;
cfs_semaphore_t lo_sem;
- cfs_semaphore_t lo_ctl_mutex;
+ cfs_mutex_t lo_ctl_mutex;
cfs_atomic_t lo_pending;
cfs_waitq_t lo_bh_wait;
static int max_loop = MAX_LOOP_DEFAULT;
static struct lloop_device *loop_dev;
static struct gendisk **disks;
-static cfs_semaphore_t lloop_mutex;
+static cfs_mutex_t lloop_mutex;
static void *ll_iocontrol_magic = NULL;
static loff_t get_loop_size(struct lloop_device *lo, struct file *file)
struct lloop_device *lo = inode->i_bdev->bd_disk->private_data;
#endif
- cfs_down(&lo->lo_ctl_mutex);
+ cfs_mutex_lock(&lo->lo_ctl_mutex);
lo->lo_refcnt++;
- cfs_up(&lo->lo_ctl_mutex);
+ cfs_mutex_unlock(&lo->lo_ctl_mutex);
return 0;
}
struct lloop_device *lo = inode->i_bdev->bd_disk->private_data;
#endif
- cfs_down(&lo->lo_ctl_mutex);
+ cfs_mutex_lock(&lo->lo_ctl_mutex);
--lo->lo_refcnt;
- cfs_up(&lo->lo_ctl_mutex);
+ cfs_mutex_unlock(&lo->lo_ctl_mutex);
return 0;
}
unsigned int cmd, unsigned long arg)
{
struct lloop_device *lo = bdev->bd_disk->private_data;
- struct inode *inode = lo->lo_backing_file->f_dentry->d_inode;
+ struct inode *inode = NULL;
+ int err = 0;
#else
static int lo_ioctl(struct inode *inode, struct file *unused,
unsigned int cmd, unsigned long arg)
{
struct lloop_device *lo = inode->i_bdev->bd_disk->private_data;
struct block_device *bdev = inode->i_bdev;
-#endif
int err = 0;
+#endif
- cfs_down(&lloop_mutex);
+ cfs_mutex_lock(&lloop_mutex);
switch (cmd) {
case LL_IOC_LLOOP_DETACH: {
err = loop_clr_fd(lo, bdev, 2);
case LL_IOC_LLOOP_INFO: {
struct lu_fid fid;
+ LASSERT(lo->lo_backing_file != NULL);
+ if (inode == NULL)
+ inode = lo->lo_backing_file->f_dentry->d_inode;
if (lo->lo_state == LLOOP_BOUND)
fid = ll_i2info(inode)->lli_fid;
else
err = -EINVAL;
break;
}
- cfs_up(&lloop_mutex);
+ cfs_mutex_unlock(&lloop_mutex);
return err;
}
CWARN("Enter llop_ioctl\n");
- cfs_down(&lloop_mutex);
+ cfs_mutex_lock(&lloop_mutex);
switch (cmd) {
case LL_IOC_LLOOP_ATTACH: {
struct lloop_device *lo_free = NULL;
}
out:
- cfs_up(&lloop_mutex);
+ cfs_mutex_unlock(&lloop_mutex);
out1:
if (rcp)
*rcp = err;
goto out_mem3;
}
- cfs_init_mutex(&lloop_mutex);
+ cfs_mutex_init(&lloop_mutex);
for (i = 0; i < max_loop; i++) {
struct lloop_device *lo = &loop_dev[i];
if (!lo->lo_queue)
goto out_mem4;
- cfs_init_mutex(&lo->lo_ctl_mutex);
- cfs_init_mutex_locked(&lo->lo_sem);
+ cfs_mutex_init(&lo->lo_ctl_mutex);
+ cfs_sema_init(&lo->lo_sem, 0);
cfs_waitq_init(&lo->lo_bh_wait);
lo->lo_number = i;
cfs_spin_lock_init(&lo->lo_lock);