static journal_t *ext4_get_dev_journal(struct super_block *sb,
dev_t j_dev)
{
struct buffer_head *bh;
journal_t *journal;
ext4_fsblk_t start;
ext4_fsblk_t len;
int hblock, blocksize;
ext4_fsblk_t sb_block;
unsigned long offset;
struct ext4_super_block *es;
struct block_device *bdev;
//检查这个分区是不是有兼容功能,如果没有,并且有日志,那就报错。
BUG_ON(!EXT4_HAS_COMPAT_FEATURE(sb, EXT4_FEATURE_COMPAT_HAS_JOURNAL));
// 这个函数是根据设备号获得设备,这个函数也是相当复杂的,这里就不讲了。
// 如果要详细讲来,10篇blog也写不完。它就是根据设备编号获得一个描述设备
//的结构体
bdev = ext4_blkdev_get(j_dev);
if (bdev == NULL) //当然如果得到的空,就是出错了,我们也就不费劲,直接返回。
return NULL;
/*
从那个bd_claim的函数名,我们就可以宣称这个设备或设备分区的的所有都就是sb,
如果当前设备已经属于其它的所有者,并且不是当然sb,那么就出错了。然后调用
blkdev_pu