Lines Matching refs:curlun

174 void fsg_lun_close(struct fsg_lun *curlun)  in fsg_lun_close()  argument
176 if (curlun->filp) { in fsg_lun_close()
177 LDBG(curlun, "close backing file\n"); in fsg_lun_close()
178 fput(curlun->filp); in fsg_lun_close()
179 curlun->filp = NULL; in fsg_lun_close()
184 int fsg_lun_open(struct fsg_lun *curlun, const char *filename) in fsg_lun_open() argument
197 ro = curlun->initially_ro; in fsg_lun_open()
206 LINFO(curlun, "unable to open backing file: %s\n", filename); in fsg_lun_open()
215 LINFO(curlun, "invalid file type: %s\n", filename); in fsg_lun_open()
224 LINFO(curlun, "file not readable: %s\n", filename); in fsg_lun_open()
232 LINFO(curlun, "unable to find file size: %s\n", filename); in fsg_lun_open()
237 if (curlun->cdrom) { in fsg_lun_open()
250 if (curlun->cdrom) { in fsg_lun_open()
254 LINFO(curlun, "file too big: %s\n", filename); in fsg_lun_open()
255 LINFO(curlun, "using only first %d blocks\n", in fsg_lun_open()
260 LINFO(curlun, "file too small: %s\n", filename); in fsg_lun_open()
265 if (fsg_lun_is_open(curlun)) in fsg_lun_open()
266 fsg_lun_close(curlun); in fsg_lun_open()
268 curlun->blksize = blksize; in fsg_lun_open()
269 curlun->blkbits = blkbits; in fsg_lun_open()
270 curlun->ro = ro; in fsg_lun_open()
271 curlun->filp = filp; in fsg_lun_open()
272 curlun->file_length = size; in fsg_lun_open()
273 curlun->num_sectors = num_sectors; in fsg_lun_open()
274 LDBG(curlun, "open backing file: %s\n", filename); in fsg_lun_open()
290 int fsg_lun_fsync_sub(struct fsg_lun *curlun) in fsg_lun_fsync_sub() argument
292 struct file *filp = curlun->filp; in fsg_lun_fsync_sub()
294 if (curlun->ro || !filp) in fsg_lun_fsync_sub()
322 ssize_t fsg_show_ro(struct fsg_lun *curlun, char *buf) in fsg_show_ro() argument
324 return sprintf(buf, "%d\n", fsg_lun_is_open(curlun) in fsg_show_ro()
325 ? curlun->ro in fsg_show_ro()
326 : curlun->initially_ro); in fsg_show_ro()
330 ssize_t fsg_show_nofua(struct fsg_lun *curlun, char *buf) in fsg_show_nofua() argument
332 return sprintf(buf, "%u\n", curlun->nofua); in fsg_show_nofua()
336 ssize_t fsg_show_file(struct fsg_lun *curlun, struct rw_semaphore *filesem, in fsg_show_file() argument
343 if (fsg_lun_is_open(curlun)) { /* Get the complete pathname */ in fsg_show_file()
344 p = file_path(curlun->filp, buf, PAGE_SIZE - 1); in fsg_show_file()
362 ssize_t fsg_show_cdrom(struct fsg_lun *curlun, char *buf) in fsg_show_cdrom() argument
364 return sprintf(buf, "%u\n", curlun->cdrom); in fsg_show_cdrom()
368 ssize_t fsg_show_removable(struct fsg_lun *curlun, char *buf) in fsg_show_removable() argument
370 return sprintf(buf, "%u\n", curlun->removable); in fsg_show_removable()
377 static ssize_t _fsg_store_ro(struct fsg_lun *curlun, bool ro) in _fsg_store_ro() argument
379 if (fsg_lun_is_open(curlun)) { in _fsg_store_ro()
380 LDBG(curlun, "read-only status change prevented\n"); in _fsg_store_ro()
384 curlun->ro = ro; in _fsg_store_ro()
385 curlun->initially_ro = ro; in _fsg_store_ro()
386 LDBG(curlun, "read-only status set to %d\n", curlun->ro); in _fsg_store_ro()
391 ssize_t fsg_store_ro(struct fsg_lun *curlun, struct rw_semaphore *filesem, in fsg_store_ro() argument
406 rc = _fsg_store_ro(curlun, ro); in fsg_store_ro()
415 ssize_t fsg_store_nofua(struct fsg_lun *curlun, const char *buf, size_t count) in fsg_store_nofua() argument
425 if (!nofua && curlun->nofua) in fsg_store_nofua()
426 fsg_lun_fsync_sub(curlun); in fsg_store_nofua()
428 curlun->nofua = nofua; in fsg_store_nofua()
434 ssize_t fsg_store_file(struct fsg_lun *curlun, struct rw_semaphore *filesem, in fsg_store_file() argument
439 if (curlun->prevent_medium_removal && fsg_lun_is_open(curlun)) { in fsg_store_file()
440 LDBG(curlun, "eject attempt prevented\n"); in fsg_store_file()
452 rc = fsg_lun_open(curlun, buf); in fsg_store_file()
454 curlun->unit_attention_data = in fsg_store_file()
456 } else if (fsg_lun_is_open(curlun)) { in fsg_store_file()
457 fsg_lun_close(curlun); in fsg_store_file()
458 curlun->unit_attention_data = SS_MEDIUM_NOT_PRESENT; in fsg_store_file()
465 ssize_t fsg_store_cdrom(struct fsg_lun *curlun, struct rw_semaphore *filesem, in fsg_store_cdrom() argument
476 ret = cdrom ? _fsg_store_ro(curlun, true) : 0; in fsg_store_cdrom()
479 curlun->cdrom = cdrom; in fsg_store_cdrom()
488 ssize_t fsg_store_removable(struct fsg_lun *curlun, const char *buf, in fsg_store_removable() argument
498 curlun->removable = removable; in fsg_store_removable()