From owner-svn-soc-all@FreeBSD.ORG Thu Jun 28 09:26:39 2012 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from socsvn.FreeBSD.org (unknown [IPv6:2001:4f8:fff6::2f]) by hub.freebsd.org (Postfix) with SMTP id 85324106564A for ; Thu, 28 Jun 2012 09:26:37 +0000 (UTC) (envelope-from oleksandr@FreeBSD.org) Received: by socsvn.FreeBSD.org (sSMTP sendmail emulation); Thu, 28 Jun 2012 09:26:37 +0000 Date: Thu, 28 Jun 2012 09:26:37 +0000 From: oleksandr@FreeBSD.org To: svn-soc-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Message-Id: <20120628092637.85324106564A@hub.freebsd.org> Cc: Subject: socsvn commit: r238459 - soc2012/oleksandr/udf-head/sys/fs/udf2 X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 28 Jun 2012 09:26:39 -0000 Author: oleksandr Date: Thu Jun 28 09:26:36 2012 New Revision: 238459 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=238459 Log: change location of determine type operation in udf_strategy, fix value of di->last_posssible_lba, clean temporary blks in udf_read_phys_sectors and change style of return operation Modified: soc2012/oleksandr/udf-head/sys/fs/udf2/udf_readwrite.c soc2012/oleksandr/udf-head/sys/fs/udf2/udf_subr.c soc2012/oleksandr/udf-head/sys/fs/udf2/udf_vfsops.c soc2012/oleksandr/udf-head/sys/fs/udf2/udf_vnops.c Modified: soc2012/oleksandr/udf-head/sys/fs/udf2/udf_readwrite.c ============================================================================== --- soc2012/oleksandr/udf-head/sys/fs/udf2/udf_readwrite.c Thu Jun 28 08:25:19 2012 (r238458) +++ soc2012/oleksandr/udf-head/sys/fs/udf2/udf_readwrite.c Thu Jun 28 09:26:36 2012 (r238459) @@ -335,10 +335,9 @@ /* off_t lblkno, rblkno; */ uint32_t sector_size, blks; /* buf_offset; */ struct vnode *devvp = ump->devvp; - uint32_t logical_secsize = 2048; sector_size = ump->sector_size; - blks = btodb(logical_secsize); + blks = btodb(sector_size); while (sectors > 0 && error == 0) { if ((error = bread(devvp, start*blks, sector_size, NOCRED, Modified: soc2012/oleksandr/udf-head/sys/fs/udf2/udf_subr.c ============================================================================== --- soc2012/oleksandr/udf-head/sys/fs/udf2/udf_subr.c Thu Jun 28 08:25:19 2012 (r238458) +++ soc2012/oleksandr/udf-head/sys/fs/udf2/udf_subr.c Thu Jun 28 09:26:36 2012 (r238459) @@ -198,7 +198,7 @@ di->disc_flags = MMC_DFLAGS_UNRESTRICTED; /* TODO problem with last_possible_lba on resizable VND; request */ - di->last_possible_lba = psize/sector_size; + di->last_possible_lba = psize/sector_size - 1; di->sector_size = sector_size; di->num_sessions = 1; @@ -751,14 +751,14 @@ } if ((size == 0) || (lb_size == 0)) - return 0; + return (0); if (lb_size == 1) - return size; + return (size); /* round up in sectors */ num_lb = (size + lb_size -1) / lb_size; - return num_lb * lb_size; + return (num_lb * lb_size); } @@ -1117,7 +1117,7 @@ if (le16toh(part->part_num) == raw_phys_part) break; } - return phys_part; + return (phys_part); } /* --------------------------------------------------------------------- */ @@ -1166,7 +1166,7 @@ if (phys_part == UDF_PARTITIONS) { free(dscr, M_UDFTEMP); - return EINVAL; + return (EINVAL); } UDF_UPDATE_DSCR(ump->partitions[phys_part], &dscr->pd); @@ -1181,7 +1181,7 @@ free(dscr, M_UDFTEMP); } - return 0; + return (0); } #undef UDF_UPDATE_DSCR @@ -1203,17 +1203,17 @@ if (error) { if (!dscr) free(dscr, M_UDFTEMP); - return error; + return (error); } /* blank block is a terminator */ if (dscr == NULL) - return 0; + return (0); /* TERM descriptor is a terminator */ if (le16toh(dscr->tag.id) == TAGID_TERM) { free(dscr, M_UDFTEMP); - return 0; + return (0); } /* process all others */ @@ -1230,7 +1230,7 @@ loc += dscr_size / sector_size; } - return error; + return (error); } @@ -1274,7 +1274,7 @@ error = udf_read_vds_extent(ump, reserve_loc, reserve_len); } - return error; + return (error); } /* --------------------------------------------------------------------- */ @@ -1983,19 +1983,19 @@ uint8_t *pmap_pos; if (ump == NULL) - return ENOENT; + return (ENOENT); /* we need at least an anchor (trivial, but for safety) */ if (ump->anchors[0] == NULL) - return EINVAL; + return (EINVAL); /* we need at least one primary and one logical volume descriptor */ if ((ump->primary_vol == NULL) || (ump->logical_vol) == NULL) - return EINVAL; + return (EINVAL); /* we need at least one partition descriptor */ if (ump->partitions[0] == NULL) - return EINVAL; + return (EINVAL); /* Check that character set is correct? @@ -2008,20 +2008,20 @@ /* check logical volume sector size verses device sector size */ if (le32toh(ump->logical_vol->lb_size) != ump->sector_size) { printf("UDF mount: format violation, lb_size != sector size\n"); - return EINVAL; + return (EINVAL); } /* check domain name */ domain_name = ump->logical_vol->domain_id.id; if (strncmp(domain_name, "*OSTA UDF Compliant", 20)) { printf("mount_udf: disc not OSTA UDF Compliant, aborting\n"); - return EINVAL; + return (EINVAL); } /* retrieve logical volume integrity sequence */ error = udf_retrieve_lvint(ump); if (error != 0) - return EINVAL; // previously it always returned this on error. + return (EINVAL); // previously it always returned this on error. /* * We need at least one logvol integrity descriptor recorded. Note @@ -2029,7 +2029,7 @@ * will close/update the integrity. */ if (ump->logvol_integrity == NULL) - return EINVAL; + return (EINVAL); /* process derived structures */ n_pm = le32toh(ump->logical_vol->n_pm); /* num partmaps */ @@ -2051,7 +2051,7 @@ if (n_pm > UDF_PMAPS) { printf("UDF mount: too many mappings\n"); - return EINVAL; + return (EINVAL); } /* count types and set partition numbers */ @@ -2106,7 +2106,7 @@ } break; default: - return EINVAL; + return (EINVAL); } /* @@ -2120,9 +2120,9 @@ raw_phys_part, phys_part, pmap_type)); if (phys_part == UDF_PARTITIONS) - return EINVAL; + return (EINVAL); if (pmap_type == UDF_VTOP_TYPE_UNKNOWN) - return EINVAL; + return (EINVAL); ump->vtop [log_part] = phys_part; ump->vtop_tp[log_part] = pmap_type; @@ -2134,14 +2134,14 @@ /* test some basic UDF assertions/requirements */ if ((n_virt > 1) || (n_spar > 1) || (n_meta > 1)) - return EINVAL; + return (EINVAL); if (n_virt) { if ((n_phys == 0) || n_spar || n_meta) - return EINVAL; + return (EINVAL); } if (n_spar + n_phys == 0) - return EINVAL; + return (EINVAL); /* select allocation type for each logical partition */ for (log_part = 0; log_part < n_pm; log_part++) { Modified: soc2012/oleksandr/udf-head/sys/fs/udf2/udf_vfsops.c ============================================================================== --- soc2012/oleksandr/udf-head/sys/fs/udf2/udf_vfsops.c Thu Jun 28 08:25:19 2012 (r238458) +++ soc2012/oleksandr/udf-head/sys/fs/udf2/udf_vfsops.c Thu Jun 28 09:26:36 2012 (r238459) @@ -567,14 +567,14 @@ */ } /* double check if we're not mounting a pervious session RW */ -//#if 0 + if (args->sessionnr != 0) { printf("UDF mount: updating a previous session " "not yet allowed\n"); error = EROFS; goto fail; } -//#endif + } #if 0 Modified: soc2012/oleksandr/udf-head/sys/fs/udf2/udf_vnops.c ============================================================================== --- soc2012/oleksandr/udf-head/sys/fs/udf2/udf_vnops.c Thu Jun 28 08:25:19 2012 (r238458) +++ soc2012/oleksandr/udf-head/sys/fs/udf2/udf_vnops.c Thu Jun 28 09:26:36 2012 (r238459) @@ -502,31 +502,31 @@ bp->b_error = error; bufdone(bp); return (error); - } - if (bp->b_iocmd & BIO_READ) { - if (lsector == UDF_TRANS_ZERO) { - /* copy sezo sector */ - memset(bp->b_data, 0, lb_size); - if ((bp->b_flags & B_ASYNC) == 0) - bufwait(bp); - /* pre-check if its an internal */ - } else if (lsector == UDF_TRANS_INTERN) { - error = udf_read_internal(udf_node, (uint8_t *) bp->b_data); - if (error) - bp->b_error = error; - bufdone(bp); - if ((bp->b_flags & B_ASYNC) == 0) - bufwait(bp); - } else { - /* bmap gives sector numbers. bio works with device blocks */ - bp->b_blkno = lsector * (udf_node->ump->sector_size/DEV_BSIZE); - } + } + } + if (bp->b_iocmd & BIO_READ) { + if (lsector == UDF_TRANS_ZERO) { + /* copy sezo sector */ + memset(bp->b_data, 0, lb_size); + if ((bp->b_flags & B_ASYNC) == 0) + bufwait(bp); + /* pre-check if its an internal */ + } else if (lsector == UDF_TRANS_INTERN) { + error = udf_read_internal(udf_node, (uint8_t *) bp->b_data); + if (error) + bp->b_error = error; + bufdone(bp); + if ((bp->b_flags & B_ASYNC) == 0) + bufwait(bp); } else { - return (ENOTSUP); + /* bmap gives sector numbers. bio works with device blocks */ + bp->b_blkno = lsector * (udf_node->ump->sector_size/DEV_BSIZE); + bp->b_iooffset = dbtob(bp->b_blkno); + BO_STRATEGY(bo, bp); } + } else { + return (ENOTSUP); } - bp->b_iooffset = dbtob(bp->b_blkno); - BO_STRATEGY(bo, bp); return (bp->b_error); }