Blame view
fs/udf/lowlevel.c
1.55 KB
1da177e4c Linux-2.6.12-rc2 |
1 2 3 4 5 6 |
/* * lowlevel.c * * PURPOSE * Low Level Device Routines for the UDF filesystem * |
1da177e4c Linux-2.6.12-rc2 |
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
* COPYRIGHT * This file is distributed under the terms of the GNU General Public * License (GPL). Copies of the GPL can be obtained from: * ftp://prep.ai.mit.edu/pub/gnu/GPL * Each contributing author retains all rights to their own work. * * (C) 1999-2001 Ben Fennema * * HISTORY * * 03/26/99 blf Created. */ #include "udfdecl.h" #include <linux/blkdev.h> #include <linux/cdrom.h> |
e973606cc udf: use linux/ua... |
24 |
#include <linux/uaccess.h> |
1da177e4c Linux-2.6.12-rc2 |
25 |
|
1da177e4c Linux-2.6.12-rc2 |
26 |
#include "udf_sb.h" |
cb00ea352 UDF: coding style... |
27 |
unsigned int udf_get_last_session(struct super_block *sb) |
1da177e4c Linux-2.6.12-rc2 |
28 29 30 31 32 |
{ struct cdrom_multisession ms_info; unsigned int vol_desc_start; struct block_device *bdev = sb->s_bdev; int i; |
cb00ea352 UDF: coding style... |
33 34 35 |
vol_desc_start = 0; ms_info.addr_format = CDROM_LBA; i = ioctl_by_bdev(bdev, CDROMMULTISESSION, (unsigned long)&ms_info); |
1da177e4c Linux-2.6.12-rc2 |
36 |
|
cb00ea352 UDF: coding style... |
37 |
if (i == 0) { |
1da177e4c Linux-2.6.12-rc2 |
38 39 |
udf_debug("XA disk: %s, vol_desc_start=%d ", |
a983f368f udf: Neaten udf_d... |
40 |
ms_info.xa_flag ? "yes" : "no", ms_info.addr.lba); |
28de7948a UDF: coding style... |
41 |
if (ms_info.xa_flag) /* necessary for a valid ms_info.addr */ |
1da177e4c Linux-2.6.12-rc2 |
42 |
vol_desc_start = ms_info.addr.lba; |
cb00ea352 UDF: coding style... |
43 |
} else { |
1da177e4c Linux-2.6.12-rc2 |
44 45 46 47 48 |
udf_debug("CDROMMULTISESSION not supported: rc=%d ", i); } return vol_desc_start; } |
cb00ea352 UDF: coding style... |
49 |
unsigned long udf_get_last_block(struct super_block *sb) |
1da177e4c Linux-2.6.12-rc2 |
50 51 52 |
{ struct block_device *bdev = sb->s_bdev; unsigned long lblock = 0; |
24a5d59f3 udf: Use device s... |
53 54 55 56 57 58 |
/* * ioctl failed or returned obviously bogus value? * Try using the device size... */ if (ioctl_by_bdev(bdev, CDROM_LAST_WRITTEN, (unsigned long) &lblock) || lblock == 0) |
1da177e4c Linux-2.6.12-rc2 |
59 60 61 62 63 64 65 |
lblock = bdev->bd_inode->i_size >> sb->s_blocksize_bits; if (lblock) return lblock - 1; else return 0; } |