[sheepdog] [PATCH v3 3/7] sheep: teach journal file to handle epoch and config write

Hitoshi Mitake mitake.hitoshi at gmail.com
Fri Apr 5 10:33:25 CEST 2013


At Thu,  4 Apr 2013 20:49:38 +0800,
Liu Yuan wrote:
> 
> From: Liu Yuan <tailai.ly at taobao.com>
> 
> journal_write_epoch and journal_write_confi is a placeholder for future use.

This commit message is obsolete. You should update it.

BTW, confi for expressing config files would be confusing. I think
config is more suitable.

>  static int replay_journal_entry(struct journal_descriptor *jd)
>  {
>  	char path[PATH_MAX];
> @@ -136,20 +165,17 @@ static int replay_journal_entry(struct journal_descriptor *jd)
>  	void *buf;
>  	char *p = (char *)jd;
>  
> -	sd_dprintf("%"PRIx64", size %"PRIu64", off %"PRIu64", %d", jd->oid,
> -		   jd->size, jd->offset, jd->create);
> -
>  	if (jd->create)
>  		flags |= O_CREAT;
> -	snprintf(path, sizeof(path), "%s/%016" PRIx64, get_object_path(jd->oid),
> -		 jd->oid);
> +
> +	journal_get_path(jd, path);
>  	fd = open(path, flags, def_fmode);
>  	if (fd < 0) {
>  		sd_eprintf("open %m");
>  		return -1;
>  	}
>  
> -	if (jd->create) {
> +	if (jd->create && jd->flag == JF_STORE) {
>  		ret = prealloc(fd, get_objsize(jd->oid));
>  		if (ret < 0)
>  			goto out;
> @@ -315,22 +341,15 @@ retry:
>  		panic("%s", strerror(err));
>  }

replay_journal_entry() lacks free(buf);

>  }
> +
> +int journal_write_store(uint64_t oid, const char *buf, size_t size,
> +			off_t offset, bool create)
> +{
> +	struct journal_descriptor jd = {
> +		.magic = JOURNAL_DESC_MAGIC,
> +		.flag = JF_STORE,
> +		.offset = offset,
> +		.size = size,
> +		.oid = oid,

The compile error still rises.

>  	if (uatomic_is_true(&sys->use_journal) &&
> -	    journal_file_write(oid, iocb->buf, iocb->length, iocb->offset,
> -			       false)
> +	    journal_write_store(oid, iocb->buf, iocb->length, iocb->offset,
> +				false)
>  	    != SD_RES_SUCCESS) {
>  		sd_eprintf("turn off journaling");
>  		uatomic_set_false(&sys->use_journal);

Is this behavior, turning off journaling and continuing, suitable?
From my perspective, at least a behavior which causes death of sheep
when writing journal fails should be supported as an optional one.

Thanks,
Hitoshi



More information about the sheepdog mailing list