/// open device
static void fs_open(char* device){
    unsigned long long int state, extended;

    if (libreiser4_init()) {
        log_mesg(0, 1, 1, fs_opt.debug, "%s: Can't initialize libreiser4.\n", __FILE__);
    }

    if (!(fs_device = aal_device_open(&file_ops, device, 512, O_RDONLY)))
    {
        log_mesg(0, 1, 1, fs_opt.debug, "%s: Cannot open the partition (%s).\n", __FILE__, device);
    }

    if (!(fs = reiser4_fs_open(fs_device, 0))) {
        log_mesg(0, 1, 1, fs_opt.debug, "%s: Can't open reiser4 on %s\n", __FILE__, device);
    }

    //reiser4_opset_profile(fs->tree->ent.opset);

    if (!(fs->journal = reiser4_journal_open(fs, fs_device))) {
        log_mesg(0, 1, 1, fs_opt.debug, "%s: Can't open journal on %s", __FILE__, device);
    }

    state = get_ss_status(STATUS(fs->status));
    extended = get_ss_extended(STATUS(fs->status));
    if(fs_opt.ignore_fschk){
        log_mesg(1, 0, 0, fs_opt.debug, "%s: Ignore filesystem check\n", __FILE__);
    }else{

        if (!state)
            log_mesg(0, 1, 1, fs_opt.debug, "%s: REISER4 can't get status\n", __FILE__);

        if (state) 
            log_mesg(3, 0, 0, fs_opt.debug, "%s: REISER4 stat : %i\n", __FILE__, state);

        if (state != FS_OK)
            log_mesg(0, 1, 1, fs_opt.debug, "%s: Filesystem isn't in valid state. May be it is not cleanly unmounted.\n\n", __FILE__);

        if (extended)
            log_mesg(3, 0, 0, fs_opt.debug, "%s: Extended status: %0xllx\n", extended, __FILE__);

    }
    //reiser4_opset_profile(fs->tree->ent.opset);
    fs->format = reiser4_format_open(fs);
}
Example #2
0
static reiser4_fs_t *busy_fs_open(char *name) {
	aal_device_t *device;
	reiser4_fs_t *fs;

	if (!(device = aal_device_open(&file_ops, name, 512, O_RDWR))) {
		aal_error("Can't open device %s.", name);
		return NULL;
	}
    
	if (!(fs = reiser4_fs_open(device, 1))) {
		aal_error("Can't open filesystem on %s.", name);
		goto error_close_device;
	}

	if (!(fs->journal = reiser4_journal_open(fs, device))) {
		aal_error("Failed to open the journal on %s.", name);
		goto error_close_fs;
	}
	
	fs->tree->mpc_func = misc_mpressure_detect;
	
	if (reiser4_journal_replay(fs->journal)) {
		aal_error("Failed to replay the journal on %s.", name);
		goto error_close_journal;
	}
	
	reiser4_journal_close(fs->journal);
	fs->journal = NULL;

	reiser4_fs_sync(fs);
	return fs;

 error_close_journal:
	reiser4_journal_close(fs->journal);
 error_close_fs:
	reiser4_fs_close(fs);
 error_close_device:
	aal_device_close(device);
	return NULL;
}