From owner-svn-src-head@FreeBSD.ORG Thu Feb 26 19:37:12 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AE5E31065672; Thu, 26 Feb 2009 19:37:12 +0000 (UTC) (envelope-from owner-svn-src-all@freebsd.org) Received: from forwards3.yandex.ru (forwards3.yandex.ru [213.180.223.174]) by mx1.freebsd.org (Postfix) with ESMTP id 3FC198FC21; Thu, 26 Feb 2009 19:37:11 +0000 (UTC) (envelope-from owner-svn-src-all@freebsd.org) Received: from mxfront61.yandex.ru (mxfront61.yandex.ru [213.180.223.120]) by forwards3.yandex.ru (Yandex) with ESMTP id 5228F1B3399; Thu, 26 Feb 2009 22:34:46 +0300 (MSK) Received: from mx2.freebsd.org ([69.147.83.53]:48067 "EHLO mx2.freebsd.org" smtp-auth: TLS-CIPHER: TLS-PEER-CN1: ) by mail.yandex.ru with ESMTP id S10013560AbZBZMdr for (+ 2 others); Thu, 26 Feb 2009 15:33:47 +0300 X-Yandex-TimeMark: 1235651627 X-Yandex-Spam: 2 X-Yandex-Front: mxfront61 Received: from hub.freebsd.org (hub.freebsd.org [IPv6:2001:4f8:fff6::36]) by mx2.freebsd.org (Postfix) with ESMTP id DC1F21A585C; Thu, 26 Feb 2009 12:33:17 +0000 (UTC) (envelope-from owner-svn-src-all@freebsd.org) Received: from hub.freebsd.org (localhost [127.0.0.1]) by hub.freebsd.org (Postfix) with ESMTP id 2E4C3106574A; Thu, 26 Feb 2009 12:33:17 +0000 (UTC) (envelope-from owner-svn-src-all@freebsd.org) Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id D8141106564A; Thu, 26 Feb 2009 12:33:02 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id C74738FC29; Thu, 26 Feb 2009 12:33:02 +0000 (UTC) (envelope-from avg@FreeBSD.org) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id n1QCX2GK027711; Thu, 26 Feb 2009 12:33:02 GMT (envelope-from avg@svn.freebsd.org) Received: (from avg@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id n1QCX2rs027710; Thu, 26 Feb 2009 12:33:02 GMT (envelope-from avg@svn.freebsd.org) Message-Id: <200902261233.n1QCX2rs027710@svn.freebsd.org> From: Andriy Gapon Date: Thu, 26 Feb 2009 12:33:02 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Sender: owner-svn-src-all@freebsd.org Errors-To: owner-svn-src-all@freebsd.org Cc: Subject: svn commit: r189067 - head/sys/fs/udf X-BeenThere: svn-src-head@freebsd.org List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 26 Feb 2009 19:37:14 -0000 Author: avg Date: Thu Feb 26 12:33:02 2009 New Revision: 189067 URL: http://svn.freebsd.org/changeset/base/189067 Log: udf_strategy: tiny optimization of logic, calculations; extra diagnostics Use bit-shift instead of division/multiplication. Act on error as soon as it is detected. Report attempt to read data embedded in file entry via regular way. While there, fix lblktosize macro and make use of it. No functionality should change as a result. Approved by: jhb (mentor) Modified: head/sys/fs/udf/udf_vnops.c Modified: head/sys/fs/udf/udf_vnops.c ============================================================================== --- head/sys/fs/udf/udf_vnops.c Thu Feb 26 12:12:34 2009 (r189066) +++ head/sys/fs/udf/udf_vnops.c Thu Feb 26 12:33:02 2009 (r189067) @@ -417,7 +417,7 @@ udf_print(struct vop_print_args *ap) #define lblkno(udfmp, loc) ((loc) >> (udfmp)->bshift) #define blkoff(udfmp, loc) ((loc) & (udfmp)->bmask) -#define lblktosize(imp, blk) ((blk) << (udfmp)->bshift) +#define lblktosize(udfmp, blk) ((blk) << (udfmp)->bshift) static int udf_read(struct vop_read_args *ap) @@ -981,10 +981,11 @@ udf_strategy(struct vop_strategy_args *a struct buf *bp; struct vnode *vp; struct udf_node *node; - int maxsize; - daddr_t sector; struct bufobj *bo; - int multiplier; + off_t offset; + uint32_t maxsize; + daddr_t sector; + int error; bp = a->a_bp; vp = a->a_vp; @@ -995,20 +996,16 @@ udf_strategy(struct vop_strategy_args *a * Files that are embedded in the fentry don't translate well * to a block number. Reject. */ - if (udf_bmap_internal(node, bp->b_lblkno * node->udfmp->bsize, - §or, &maxsize)) { + offset = lblktosize(node->udfmp, bp->b_lblkno); + error = udf_bmap_internal(node, offset, §or, &maxsize); + if (error) { clrbuf(bp); bp->b_blkno = -1; + bufdone(bp); + return (0); } - /* bmap gives sector numbers, bio works with device blocks */ - multiplier = node->udfmp->bsize / DEV_BSIZE; - bp->b_blkno = sector * multiplier; - - } - if ((long)bp->b_blkno == -1) { - bufdone(bp); - return (0); + bp->b_blkno = sector << (node->udfmp->bshift - DEV_BSHIFT); } bo = node->udfmp->im_bo; bp->b_iooffset = dbtob(bp->b_blkno); _______________________________________________ svn-src-all@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-all To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"